我想弄清楚自动加载的事情,但我很难让它在没有明确要求文件的情况下工作。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