неопределенный метод `children’ для nil:NilClass

#ruby #ruby-on-rails-3 #ruby-1.9.2

#ruby #ruby-on-rails-3 #ruby-1.9.2

Вопрос:

Хорошо. Здесь я перестал соображать.

У меня есть приложение rails, над которым я не работал около 3 недель…тем не менее, когда я остановился, это нигде не выдало эту ошибку.

Я использую последние версии многих драгоценных камней, но, похоже, все они работают. Сейчас я работаю под ruby1.9, и поэтому я обновил все, чтобы соответствовать этому. Я достаточно уверен, что это единственное существенное изменение, произошедшее 3 недели назад.

Многие страницы отображаются просто отлично, но одна страница завершается с ошибкой NoMethodError «неопределенный метод `children’ для nil: NilClass» и следующей, по-видимому, трассировкой стека только для фреймворка. Для рассматриваемой страницы я зашел так далеко, что закомментировал всю страницу haml, метод контроллера, все before_filters, все application_controller и несколько других вещей.

Я понизил рейтинг haml и compass, подозревая, что они были виновниками, хотя другие страницы отображаются просто отлично. В настоящее время я возвращаюсь к стабильным веткам для всего, кроме, я думаю, devise, но это, похоже, не является частью проблемы, потому что логины работают просто отлично.

 activesupport (3.0.7) lib/active_support/whiny_nil.rb:48:in `method_missing'
haml (3.1.1) lib/haml/parser.rb:151:in `parse'
haml (3.1.1) lib/haml/engine.rb:124:in `initialize'
haml (3.1.1) lib/haml/template/plugin.rb:34:in `new'
haml (3.1.1) lib/haml/template/plugin.rb:34:in `compile'
haml (3.1.1) lib/haml/template/plugin.rb:39:in `call'
actionpack (3.0.7) lib/action_view/template.rb:226:in `compile'
actionpack (3.0.7) lib/action_view/template.rb:134:in `block in render'
activesupport (3.0.7) lib/active_support/notifications.rb:54:in `instrument'
actionpack (3.0.7) lib/action_view/template.rb:127:in `render'
actionpack (3.0.7) lib/action_view/render/rendering.rb:59:in `block in _render_template'
activesupport (3.0.7) lib/active_support/notifications.rb:52:in `block in instrument'
activesupport (3.0.7) lib/active_support/notifications/instrumenter.rb:21:in `instrument'
activesupport (3.0.7) lib/active_support/notifications.rb:52:in `instrument'
actionpack (3.0.7) lib/action_view/render/rendering.rb:56:in `_render_template'
actionpack (3.0.7) lib/action_view/render/rendering.rb:26:in `render'
haml (3.1.1) lib/haml/helpers/action_view_mods.rb:13:in `render_with_haml'
actionpack (3.0.7) lib/abstract_controller/rendering.rb:115:in `_render_template'
actionpack (3.0.7) lib/abstract_controller/rendering.rb:109:in `render_to_body'
actionpack (3.0.7) lib/action_controller/metal/renderers.rb:47:in `render_to_body'
actionpack (3.0.7) lib/action_controller/metal/compatibility.rb:55:in `render_to_body'
actionpack (3.0.7) lib/abstract_controller/rendering.rb:102:in `render_to_string'
actionpack (3.0.7) lib/abstract_controller/rendering.rb:93:in `render'
actionpack (3.0.7) lib/action_controller/metal/rendering.rb:17:in `render'
actionpack (3.0.7) lib/action_controller/metal/instrumentation.rb:40:in `block (2 levels) in render'
activesupport (3.0.7) lib/active_support/core_ext/benchmark.rb:5:in `block in ms'
/Users/DeVeLoPeR/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/benchmark.rb:309:in `realtime'
activesupport (3.0.7) lib/active_support/core_ext/benchmark.rb:5:in `ms'
actionpack (3.0.7) lib/action_controller/metal/instrumentation.rb:40:in `block in render'
actionpack (3.0.7) lib/action_controller/metal/instrumentation.rb:78:in `cleanup_view_runtime'
activerecord (3.0.7) lib/active_record/railties/controller_runtime.rb:15:in `cleanup_view_runtime'
actionpack (3.0.7) lib/action_controller/metal/instrumentation.rb:39:in `render'
actionpack (3.0.7) lib/action_controller/metal/implicit_render.rb:14:in `default_render'
actionpack (3.0.7) lib/action_controller/metal/implicit_render.rb:6:in `send_action'
actionpack (3.0.7) lib/abstract_controller/base.rb:150:in `process_action'
actionpack (3.0.7) lib/action_controller/metal/rendering.rb:11:in `process_action'
actionpack (3.0.7) lib/abstract_controller/callbacks.rb:18:in `block in process_action'
activesupport (3.0.7) lib/active_support/callbacks.rb:436:in `_run__1376965243214072245__process_action__2201785587746499238__callbacks'
activesupport (3.0.7) lib/active_support/callbacks.rb:410:in `_run_process_action_callbacks'
activesupport (3.0.7) lib/active_support/callbacks.rb:94:in `run_callbacks'
actionpack (3.0.7) lib/abstract_controller/callbacks.rb:17:in `process_action'
actionpack (3.0.7) lib/action_controller/metal/instrumentation.rb:30:in `block in process_action'
activesupport (3.0.7) lib/active_support/notifications.rb:52:in `block in instrument'
activesupport (3.0.7) lib/active_support/notifications/instrumenter.rb:21:in `instrument'
activesupport (3.0.7) lib/active_support/notifications.rb:52:in `instrument'
actionpack (3.0.7) lib/action_controller/metal/instrumentation.rb:29:in `process_action'
actionpack (3.0.7) lib/action_controller/metal/rescue.rb:17:in `process_action'
actionpack (3.0.7) lib/abstract_controller/base.rb:119:in `process'
actionpack (3.0.7) lib/abstract_controller/rendering.rb:41:in `process'
actionpack (3.0.7) lib/action_controller/metal.rb:138:in `dispatch'
actionpack (3.0.7) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
actionpack (3.0.7) lib/action_controller/metal.rb:178:in `block in action'
actionpack (3.0.7) lib/action_dispatch/routing/route_set.rb:62:in `call'
actionpack (3.0.7) lib/action_dispatch/routing/route_set.rb:62:in `dispatch'
actionpack (3.0.7) lib/action_dispatch/routing/route_set.rb:27:in `call'
rack-mount (0.6.14) lib/rack/mount/route_set.rb:148:in `block in call'
rack-mount (0.6.14) lib/rack/mount/code_generation.rb:93:in `block in recognize'
rack-mount (0.6.14) lib/rack/mount/code_generation.rb:68:in `optimized_each'
rack-mount (0.6.14) lib/rack/mount/code_generation.rb:92:in `recognize'
rack-mount (0.6.14) lib/rack/mount/route_set.rb:139:in `call'
actionpack (3.0.7) lib/action_dispatch/routing/route_set.rb:493:in `call'
sass (3.1.1) lib/sass/plugin/rack.rb:54:in `call'
warden (1.0.4) lib/warden/manager.rb:35:in `block in call'
warden (1.0.4) lib/warden/manager.rb:34:in `catch'
warden (1.0.4) lib/warden/manager.rb:34:in `call'
actionpack (3.0.7) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
actionpack (3.0.7) lib/action_dispatch/middleware/head.rb:14:in `call'
rack (1.2.2) lib/rack/methodoverride.rb:24:in `call'
actionpack (3.0.7) lib/action_dispatch/middleware/params_parser.rb:21:in `call'
actionpack (3.0.7) lib/action_dispatch/middleware/flash.rb:182:in `call'
actionpack (3.0.7) lib/action_dispatch/middleware/session/abstract_store.rb:149:in `call'
actionpack (3.0.7) lib/action_dispatch/middleware/cookies.rb:302:in `call'
activerecord (3.0.7) lib/active_record/query_cache.rb:32:in `block in call'
activerecord (3.0.7) lib/active_record/connection_adapters/abstract/query_cache.rb:28:in `cache'
activerecord (3.0.7) lib/active_record/query_cache.rb:12:in `cache'
activerecord (3.0.7) lib/active_record/query_cache.rb:31:in `call'
activerecord (3.0.7) lib/active_record/connection_adapters/abstract/connection_pool.rb:354:in `call'
actionpack (3.0.7) lib/action_dispatch/middleware/callbacks.rb:46:in `block in call'
activesupport (3.0.7) lib/active_support/callbacks.rb:416:in `_run_call_callbacks'
actionpack (3.0.7) lib/action_dispatch/middleware/callbacks.rb:44:in `call'
rack (1.2.2) lib/rack/sendfile.rb:107:in `call'
actionpack (3.0.7) lib/action_dispatch/middleware/remote_ip.rb:48:in `call'
actionpack (3.0.7) lib/action_dispatch/middleware/show_exceptions.rb:47:in `call'
railties (3.0.7) lib/rails/rack/logger.rb:13:in `call'
rack (1.2.2) lib/rack/runtime.rb:17:in `call'
activesupport (3.0.7) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
rack (1.2.2) lib/rack/lock.rb:11:in `block in call'
<internal:prelude>:10:in `synchronize'
rack (1.2.2) lib/rack/lock.rb:11:in `call'
actionpack (3.0.7) lib/action_dispatch/middleware/static.rb:30:in `call'
railties (3.0.7) lib/rails/application.rb:168:in `call'
railties (3.0.7) lib/rails/application.rb:77:in `method_missing'
railties (3.0.7) lib/rails/rack/log_tailer.rb:14:in `call'
rack (1.2.2) lib/rack/content_length.rb:13:in `call'
rack (1.2.2) lib/rack/handler/webrick.rb:52:in `service'
/Users/DeVeLoPeR/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service'
/Users/DeVeLoPeR/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run'
/Users/DeVeLoPeR/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread'
  

Я начинаю думать, что изменение в ruby 1.9.2 вызвало это, но я не могу представить, как это могло бы произойти. Я собираюсь вернуться к ruby 1.8.7, чтобы снова начать работать (надеюсь), но наш производственный сервер работает под управлением 1.9.2, так что в какой-то момент он мне понадобится.

Приветствуются любые мысли.

Спасибо

Редактировать Понижение рейтинга до Ruby1.8.7 не имело никакого эффекта. Я также попробовал это на другом компьютере без RVM.

Отредактируйте Gemfile в соответствии с запросом:

 source 'http://rubygems.org'

gem 'rails', '3.0.7'

gem 'sqlite3-ruby', :require => 'sqlite3'
gem 'mysql'

gem "will_paginate", "~> 3.0.pre2"
gem 'activemerchant'

gem 'devise', '1.1.9'

gem 'ruby-debug'
gem 'sslrequirement'
gem 'cancan'
gem 'rmagick'
gem 'carrierwave', "~> 0.5.3"
gem 'haml'
gem 'compass'
#gem 'mongrel'
gem 'jquery-rails'

group :development, :test do
  gem 'webrat'
  gem 'wirble'
end
  

Комментарии:

1. Вы установили пакет после обновления gems? Просто пытаюсь убедиться, что все охвачено. И, если вы используете Kaminari, можете ли вы опубликовать свой Gemfile?

2. Файл Haml не может быть проанализирован. Вы должны опубликовать это. Кроме того, включите ‘list’ или ‘show invisibles’ в вашем редакторе, чтобы дважды проверить отступ. Haml довольно разборчив в отношении пробелов.

3. Кейли Вудс — я опубликую свой gemfile здесь через секунду. Я понятия не имею, что такое Kaminari … так что … вероятно, нет.

4. Остин Тейлор — на самом деле я все время редактирую с помощью:set list. Файл не изменился с момента последней работы и в настоящее время blank…so публикация этого, вероятно, не принесет никакой пользы. Спасибо, что посмотрели.

Ответ №1:

Используете ли вы комментарии HAML (-#)? Их удаление сработало для меня.

Комментарии:

1. Raven — Да. В конечном итоге это стало и моей проблемой. Я думаю, что с процессором haml что-то не так, учитывая определенные обстоятельства и комментарии haml. Однако это происходит не с каждым комментарием haml. Я начал копаться, чтобы посмотреть, что происходит, но у меня действительно не было времени копаться в то время.