簡體   English   中英

Rails NameError:初始加載時未初始化的常量

[英]Rails NameError: uninitialized constant on initial load

我有一個奇怪的重復錯誤:每次啟動工作程序時,它在第一次嘗試時都會失敗,然后從那里開始工作。 每次我得到相同的錯誤。

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位於lib/models/scorecards_virtual_attributes/level_calculator.rb

可能還有其他原因可能導致這種情況嗎? 還是我的工作有問題?

Rails 3不會自動加載lib目錄本身下的文件。 如果您使用的是Rails 3或更高版本,則必須將其加載到config / application.rb中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM