Rails NameError: неинициализированная константа при начальной загрузке

У меня странная повторяющаяся ошибка: каждый раз, когда рабочий загружается, он терпит неудачу с первой попытки, а затем будет работать с этого момента. Каждый раз получаю одну и ту же ошибку.

NameError: uninitialized constant Models::ScorecardVirtualAttributes::LevelCalculator

Так что я провел обычные проверки: сначала я проверил, правильно ли написано. Затем я проверил, не зависит ли это от драгоценного камня, который каким-то образом не был включен, а это не так.

Я думаю, что воспроизвел сбой в консоли. При начальной загрузке консоли я запускаю это:

[1] toolkit »  defined? Models::ScorecardVirtualAttributes::LevelCalculator
  => nil
[2] toolkit »  defined? ::Models::ScorecardVirtualAttributes::LevelCalculator
  => nil
[3] toolkit »  Models::ScorecardVirtualAttributes::LevelCalculator
  => Models::ScorecardVirtualAttributes::LevelCalculator < Object
[4] toolkit »  defined? ::Models::ScorecardVirtualAttributes::LevelCalculator
  => "constant"

Как видите, когда я проверяю, определен ли он, сначала происходит сбой. Но затем, после прямого вызова, он возвращает ожидаемую «константу», когда я проверяю, определена ли она.

Я тогда подумал, что, возможно, он не загружается правильно. Вот что у меня есть в моем config/application.rb:

# Within config/application.rb
...
config.autoload_paths += %W( #{Rails.root}/lib) #/models

У меня есть каталог lib/models, добавленный к autoload_paths, и модель, которая изначально не загружается, находится в lib/models/scorecards_virtual_attributes/level_calculator.rb.

Возможно, есть что-то еще, что могло вызвать это? Или что-то не так с тем, что я делаю?


person TheLegend    schedule 16.09.2014    source источник


Ответы (1)


Rails 3 не загружает файлы в сам каталог lib автоматически. Если вы используете Rails 3 или выше, вам придется загрузить его в config/application.rb.

person nbirla    schedule 16.09.2014