ruby-on-rails - 在 Rails 3 中将 lib 添加到 'config.autoload_paths' 不会自动加载我的模块

标签 ruby-on-rails

我将文件名 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.rbgoogle/docs.rb

关于ruby-on-rails - 在 Rails 3 中将 lib 添加到 'config.autoload_paths' 不会自动加载我的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4074830/

相关文章:

ruby-on-rails - 如何强制 Rails 仅使用 TLS over SSL?

ruby-on-rails - ruby on rails 上的页面缓存和 i18n

ruby-on-rails - 无法使用 rails generate 生成 mongoid 配置文件

css - 想要更改数据表的行背景颜色

ruby-on-rails - 在 Ruby on Rails 中显示类别文章和标签

ruby-on-rails - Rails 3 + 守护进程 gem : Exception when querying model

ruby-on-rails - 如何基于正则表达式执行事件记录搜索

ruby-on-rails - rails : Testing Cron Jobs in development environment

ruby-on-rails - ruby compass 错误 : Failed to build gem native extension

javascript - 在Rails 3中从observe_field更改为JQuery