2013-09-30 83 views
211

我在開發過程中使用下面的行以初始化自動加載代碼在我/lib lib目錄中的文件:自動加載Rails中4

配置/初始化/ custom.rb:

RELOAD_LIBS = Dir[Rails.root + 'lib/**/*.rb'] if Rails.env.development? 

(從Rails 3 Quicktip: Auto reload lib folders in development mode

它工作的很好,但它在生產中使用效率太低 - 而不是在每個請求中加載庫,我只是想在啓動時加載它們。同樣的博客有another article描述如何做到這一點:試圖使用時

# Custom directories with classes and modules you want to be autoloadable. 
config.autoload_paths += %W(#{config.root}/lib) 
config.autoload_paths += Dir["#{config.root}/lib/**/"] 

然而,當我切換到,即使是在發展,我得到NoM​​ethodErrors:

的config/application.rb中lib函數。

我LIB文件之一

例子:

的lib/extensions.rb中:

Time.class_eval do 
    def self.milli_stamp 
    Time.now.strftime('%Y%m%d%H%M%S%L').to_i 
    end 
end 

調用Time.milli_stamp將拋出NoMethodError

我知道其他人回答了SO,但類似的問題他們似乎都處理命名約定和其他我以前不必擔心的問題 - 我的lib類已經工作爲每個請求加載,我只是想將其更改爲per-啓動加載。什麼是正確的方法來做到這一點?

+0

是當一個Rails應用程序啓動時的配置/初始化文件夾中自動加載? – Jwan622

回答