/lib
在开发过程中,我在初始化器中使用以下行来自动加载目录中的代码:
config / initializers / custom.rb:
RELOAD_LIBS = Dir[Rails.root + 'lib/**/*.rb'] if Rails.env.development?
(来自Rails 3 Quicktip:在开发模式下自动重新加载lib文件夹)
它工作得很好,但是在生产中使用效率太低-我只想在启动时加载它们,而不是在每个请求上加载库。同一博客还有另一篇文章描述了如何执行此操作:
config / application.rb:
# Custom directories with classes and modules you want to be autoloadable.
config.autoload_paths += %W(#{config.root}/lib)
config.autoload_paths += Dir["#{config.root}/lib/**/"]
但是,当我切换到该位置时,即使在开发中,尝试使用lib函数时也会出现NoMethodErrors。
我的一个lib文件的示例:
lib / extensions.rb:
Time.class_eval do
def self.milli_stamp
Time.now.strftime('%Y%m%d%H%M%S%L').to_i
end
end
调用Time.milli_stamp
将抛出NoMethodError
我知道其他人的SO回答类似的问题,但他们似乎都应对命名约定和其他问题我没有有大约在─我的lib类已经担心工作的每个请求的负载,我只是想改变它每次启动加载。什么是正确的方法?