我從/ plac.rb命名的Plac的Rails 3 - 不同類的行爲在軌控制檯VS軌服務器
模型在模型中定義的模型,這樣中引用的自定義類:
class Model < ActiveRecord::Base
def notify_owner
notifier = BatchNotify.getInstance
end
end
BatchNotify在LIB /模塊/ batch_notify.rb定義像這樣:
class BatchNotify
def self.getInstance
env = Rails.env
if(env == "test")
return TestBatchNotify.new
else
BatchNotify.new
end
end
end
我加模塊目錄autoload_path:
config.autoload_paths += %W(#{config.root}/lib/modules)
奇怪的是,當notify_owner()在rails控制檯上工作良好時。
然而,當我開始使用Rails服務器的Web服務器,並嘗試通過在瀏覽器中使用的應用程序觸發notify_owner,我得到以下錯誤:
未初始化的常量的Plac :: BatchNotify
首先,爲什麼在控制檯和Web服務器中的行爲不同?
二,爲什麼它仍然不能識別批量通知常量?
順便說一句,我也試着在一個模塊內定義BatchNotify並沒有運氣引用它作爲模塊:: BatchNotify ...
永遠不要依賴於Rails的自動加載功能。始終要求你的依賴。在模型中添加**需要'modules/batch_notify'**。 **導軌控制檯製作**應該有類似的問題。 – 2013-08-03 17:50:31
已經有一個很好的答案。但作爲附加提示..如果您編寫:: BatchNotify而不是BatchNotify,rails將搜索模型類作用域之外的常量。 – Mattherick
Mattherick我試過了。我得到這個錯誤:未初始化的常量BatchNotify –