Ошибка консоли Rails: неопределенный метод `each 'для nil: NilClass (NoMethodError)

Любая попытка запустить rails console в корневом каталоге моего приложения Rails приводит к следующей ошибке:

неопределенный метод `each 'для nil: NilClass (NoMethodError)

Полная трассировка стека:

 /Users/gnerkus/.rvm/gems/ruby-2.2.3@rails-experiments/gems/railties-5.0.0.beta1.1/lib/rails/railtie.rb:245:in `each_registered_block': undefined method `each' for nil:NilClass (NoMethodError)
  from /Users/gnerkus/.rvm/gems/ruby-2.2.3@rails-experiments/gems/railties-5.0.0.beta1.1/lib/rails/railtie.rb:224:in `run_console_blocks'
  from /Users/gnerkus/.rvm/gems/ruby-2.2.3@rails-experiments/gems/railties-5.0.0.beta1.1/lib/rails/application.rb:461:in `block in run_console_blocks'
  from /Users/gnerkus/.rvm/gems/ruby-2.2.3@rails-experiments/gems/railties-5.0.0.beta1.1/lib/rails/engine/railties.rb:13:in `each'
  from /Users/gnerkus/.rvm/gems/ruby-2.2.3@rails-experiments/gems/railties-5.0.0.beta1.1/lib/rails/engine/railties.rb:13:in `each'
  from /Users/gnerkus/.rvm/gems/ruby-2.2.3@rails-experiments/gems/railties-5.0.0.beta1.1/lib/rails/application.rb:461:in `run_console_blocks'
  from /Users/gnerkus/.rvm/gems/ruby-2.2.3@rails-experiments/gems/railties-5.0.0.beta1.1/lib/rails/engine.rb:442:in `load_console'
  from /Users/gnerkus/.rvm/gems/ruby-2.2.3@rails-experiments/gems/railties-5.0.0.beta1.1/lib/rails/commands/console.rb:34:in `initialize'
  from /Users/gnerkus/.rvm/gems/ruby-2.2.3@rails-experiments/gems/railties-5.0.0.beta1.1/lib/rails/commands/console_helper.rb:9:in `new'
  from /Users/gnerkus/.rvm/gems/ruby-2.2.3@rails-experiments/gems/railties-5.0.0.beta1.1/lib/rails/commands/console_helper.rb:9:in `start'
  from /Users/gnerkus/.rvm/gems/ruby-2.2.3@rails-experiments/gems/railties-5.0.0.beta1.1/lib/rails/commands/commands_tasks.rb:78:in `console'
  from /Users/gnerkus/.rvm/gems/ruby-2.2.3@rails-experiments/gems/railties-5.0.0.beta1.1/lib/rails/commands/commands_tasks.rb:49:in `run_command!'
  from /Users/gnerkus/.rvm/gems/ruby-2.2.3@rails-experiments/gems/railties-5.0.0.beta1.1/lib/rails/command.rb:20:in `run'
  from /Users/gnerkus/.rvm/gems/ruby-2.2.3@rails-experiments/gems/railties-5.0.0.beta1.1/lib/rails/commands.rb:19:in `<top (required)>'
  from bin/rails:4:in `require'
  from bin/rails:4:in `<main>'

Я проследил ошибку до этого блока в railtie.rb файле библиотеки Rails:

def each_registered_block(type, &block)
  klass = self.class
  while klass.respond_to?(type)
    # The ':console' type doesn't seem to exist
    klass.public_send(type).each(&block) 
    klass = klass.superclass
  end
end

что, в свою очередь, происходит из этого блока:

def run_console_blocks(app) #:nodoc:
  each_registered_block(:console) { |block| block.call(app) }
end

Я удалил гем spring и установил гем rubocop. В противном случае мой Gemfile содержит драгоценные камни по умолчанию.

Моя версия Ruby - 2.2.3, что выше версии 2.2.2, рекомендованной для Rails 5.

Версия Ruby: 2.2.3p173 Версия Rails: 5.0.0.beta1.1 Версия RVM: 1.26.11


person gnerkus    schedule 28.01.2016    source источник
comment
Не могли бы вы опубликовать полную трассировку стека?   -  person Nick Aschenbach    schedule 28.01.2016


Ответы (3)


Ошибка была вызвана гемом web-console, как указано здесь: Ошибка при запуске консоли rails . web-console был в версии 3.1.0 на момент сообщения об этом. Версия 3.0.0 web-console, похоже, не вызвала никаких ошибок при выполнении rails console.

Убедитесь, что ваша версия web-console 3.1.1 и выше, поскольку проблема была исправлена ​​в версии 3.1.1.

person gnerkus    schedule 28.01.2016
comment
Я сделаю это. Мне нужно подождать два дня, прежде чем я смогу. - person gnerkus; 28.01.2016
comment
+1 У меня была такая же проблема при использовании web-console 3.1.0 с Rails 4.2.5.1, и связанный поток Github мне помог. После возврата к версии 3.0 консоль снова заработала. - person Paul Fioravanti; 28.01.2016
comment
Rails 4.2.5.1 имеет ту же проблему. Но это тоже можно исправить с помощью обновленной версии 3.1.1 of web-console. - person Penguin; 29.01.2016

gem install spring работал у меня.

Моя проблема была:

/usr/local/bin/NMONMerge.rb:209:in `block in <main>': undefined method `each' for nil:NilClass (NoMethodError)
from /usr/local/bin/NMONMerge.rb:191:in `each'
from /usr/local/bin/NMONMerge.rb:191:in `<main>'
person Thomas    schedule 26.04.2016

Вам необходимо установить Spring gem

gem install spring  --pre
person vipin    schedule 28.01.2016