我将文件名 g.rb 放在 Rails.root/lib
文件夹中
文件内容如下:
module Google
end
然后我添加
config.autoload_paths += %W(#{config.root}/lib #{Rails.root}/app/delayed_jobs)
到我的Rails.root/config/application.rb
但是,当我尝试从 rails console
调用 Google 时,会引发异常。仅当我执行 require 'google'
时,异常才会消失。
为什么?我的文件不应该自动加载吗?我不应该在没有任何额外 require
语句的情况下访问该模块吗?
最佳答案
嗯,我发现了一件有趣的事情。为了让 Rails 自动加载我的类,类名应该符合文件名和文件夹结构。
例如,如果我想要自动加载 Google 模块,我必须将其放在 google.rb
内,直接位于/lib 下(如果我指定从/lib 自动加载)。
如果我想自动加载 Google::Docs
,那么我可以将其放入 google.rb
或 google/docs.rb
关于ruby-on-rails - 在 Rails 3 中将 lib 添加到 'config.autoload_paths' 不会自动加载我的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4074830/