Ruby Rails 4:从库自动加载
我正试图解决自动加载的问题,但我很难在不明确要求文件的情况下让它正常工作 我是否需要进行一些特殊配置,以便Rails 4能够自动加载Ruby Rails 4:从库自动加载,ruby,ruby-on-rails-4,Ruby,Ruby On Rails 4,我正试图解决自动加载的问题,但我很难在不明确要求文件的情况下让它正常工作 我是否需要进行一些特殊配置,以便Rails 4能够自动加载lib目录中的文件 如果我转到rails控制台并键入$LOAD\u PATH,我可以看到/home/some\u user/workspace/rails/myapp/lib包含在加载路径中。这意味着Rails将能够自动加载正确的文件 据我所知: 如果我将文件放在lib/目录中,并使用命名约定,Rails应该能够自动要求正确的文件,如果在我的代码中的任何地方,我会这
lib
目录中的文件
如果我转到rails控制台
并键入$LOAD\u PATH
,我可以看到/home/some\u user/workspace/rails/myapp/lib
包含在加载路径中。这意味着Rails将能够自动加载正确的文件
据我所知:如果我将文件放在
lib/
目录中,并使用命名约定,Rails应该能够自动要求正确的文件,如果在我的代码中的任何地方,我会这样做:
cats=cats::SomeCat.new
(假设存在lib/cats/some_cat.rb
)
并且一些\u cat.rb
包含:
module Cats
class SomeCat
def initialize
@name = "Some cat"
end
end
end
但是,Rails将向我显示错误未初始化常量CatController::Cats
如果我添加一行require'cats/some_cat'
一切都会正常。然而,在《Rails 4路》中,我读到:底线是,如果遵循命名约定,您应该很少需要在Rails应用程序中显式加载Ruby代码(使用require)
我是否使用了错误的命名约定,还是被迫使用该命名约定
config.autoload_路径+=%W(#{config.root}/lib)
thing?添加config.autoload_路径+=%W(#{config.root}/lib)
此代码在
config/application.rb您说您需要在config/application.rb
目录中进行配置是正确的
正如Sobin所提到的,最好的方法是在该文件中包含一个config.autoload\u path…
您可以在rails指南中找到更多关于这方面的信息
您是否重新启动了应用程序?当应用程序初始化时,它只初始化一次。可能的副本作为旁注:将加载app/
的子目录(以及其中的类/模块),这是我通常做的-创建子目录,例如app/workers
。