TL;DR
去吧!
让我详细解释一下。
我不知道为什么接受这个答案,因为它对在每个请求上重新加载 lib 文件夹没有帮助。首先我认为它适用于 Rails 2,但问题清楚地表明它适用于 Rails 3,并且 3.0.0 的发布日期在答案日期之前。
其他答案似乎过于复杂或无法提供真正的解决方案。
我决定稍微调查一下,因为这让我很困扰,我什至发现人们有一个解决方法,它包括在开发中将 lib 文件保存在 app/models 中,然后将其移动到 /lib完成后。我们可以做得更好,对吧?
我的解决方案已经过测试:
- Rails 3.0.20
- Rails 3.1.12
- Rails 3.2.13
- Rails 4.0.0.rc1
把这个放到你的config/application.rb:
# in config/application.rb
config.eager_load_paths += ["#{Rails.root}/lib"]
就是这样!™
确保将其放在此处,因为如果将其放在 config/environments/development.rb 中,它将不起作用。
确保删除 /lib 代码的所有 require 语句,因为 require 语句也会导致此解决方案不起作用。
这段代码隐含地需要你的代码,所以如果你做环境检查(这是不必要的),而不是上面的代码,你决定写这样的东西:
# in config/application.rb
config.eager_load_paths += ["#{Rails.root}/lib"] if Rails.env.development?
您应该注意旧的 require 语句,因为在这种情况下,所有非开发环境仍然需要它们。
因此,如果您仍然决定进行环境检查,请确保对 require 语句进行反向检查。不然会被咬!
require "beer_creator" unless Rails.env.development?
你可能认为写整段关于不必要的事情也是不必要的,但我认为在做不必要的事情时警告人们一些必要的事情也是必要的。
如果您想了解有关此主题的更多信息,请查看this little tutorial。