Ruby 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应该能够自动要求正确的文件,如果在我的代码中的任何地方,我会这

我正试图解决自动加载的问题,但我很难在不明确要求文件的情况下让它正常工作

我是否需要进行一些特殊配置,以便Rails 4能够自动加载
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