我想弄清楚自動加載的事情,但我很難讓它在沒有明確要求文件的情況下工作。Rails 4:自動從lib下載
我需要做一些特殊的配置,以便Rails 4能夠自動加載lib
目錄中的文件嗎?
如果我去rails console
並輸入$LOAD_PATH
我可以看到/home/some_user/workspace/rails/myapp/lib
被包含到加載路徑中。這應該意味着Rails將能夠自動加載正確的文件?
所以我的理解:
如果我把裏面lib/
目錄我的文件,我將使用的命名約定,Rails的應該能夠自動要求正確的文件,如果在我的代碼的任何地方,我會做這樣的事情:
cats = Cats::SomeCat.new
(假定lib/cats/some_cat.rb
存在)
和some_cat.rb
包含:
module Cats
class SomeCat
def initialize
@name = "Some cat"
end
end
end
但是,Rails會顯示錯誤uninitialized constant CatController::Cats
。
如果我添加一行require 'cats/some_cat'
一切都會奏效。然而,在'The Rails 4 Way'中,我讀到:
The bottom line is that you should rarely need to explicitly load Ruby code in your Rails application (using require) if you follow the naming conventions
。
我使用了錯誤的命名約定還是我強迫使用那
config.autoload_paths += %W(#{config.root}/lib)
的事?
你重新啓動應用程序?它在初始化應用程序時僅被初始化一次。 – nebula 2014-11-02 16:14:27
[自動加載lib文件在Rails 4中]的可能的副本(http://stackoverflow.com/questions/19098663/auto-loading-lib-files-in-rails-4) – MZaragoza 2014-11-02 16:38:31
作爲一個附註:Subdirectores的' app /'(以及其中的類/模塊)將被加載,這就是我通常所做的 - 創建一個子目錄,例如'應用程序/ workers'。 – lllllll 2015-10-26 17:58:38