2
我在lib文件夾中的Rails 3.2應用程序中有一堆自定義類:即擴展ActiveRecord等。它一切正常。Rails不會從lib中加載我的模塊
不過我想添加一些自定義的方法來文件實用程序,即
module FileUtils
def last_modified_file(path='.')
# blah ...
end
end
我把它放在LIB/file_utils.rb 在我的application.rb中我有
config.autoload_paths += %W(#{config.root}/lib)
我的其他自定義分類被加載,但不是模塊。
我讀了(Best way to load module/class from lib folder in Rails 3?),我應該在模塊中定義一個類,以便Rails根據FileUtils.class來拾取它 - 它應該是Object < BasicObject。
所以,我想
module FileUtils
class Object
def last_modified_file(path='.')
# blah ...
end
end
end
但是,這並不工作。
但是,當我啓動irb,只是粘貼我的代碼,有效地將我的新代碼放入對象並重新包括我的模塊 - 它工作正常。
Whaat amd我在這裏找不到?
這就是我現在正在做的。我有一個初始化程序'require_libs.rb',用於需要明確需要的一些寶石。 'require「#{Rails.root} /lib/file_utils.rb」;包括FileUtils'。那麼你是說沒有另一種Rails「automagic」的方式呢? – konung
正確。自動加載僅適用於尚未出現的常量。遇到缺少的常量時,Rails會在自動加載路徑中搜索與常量名稱的snake_cased版本匹配的文件並加載它。 –