由于最新的Rails 3版本不再从lib中自动加载模块和类, 最好的装货方式是什么?

从github:

在这次提交中做了一些更改: 不自动加载代码在*lib*的应用程序(现在你需要显式 要求他们)。这使得应用程序的行为更接近于引擎 (lib中的代码仍然是自动加载插件);


当前回答

有几个原因可能会导致从库中加载时出现问题-详情请参阅这里- http://www.williambharding.com/blog/technology/rails-3-autoload-modules-and-classes-in-production/

修复自动加载路径 线程安全的相关 相关的命名 ...

其他回答

如果只有某些文件需要访问lib中的模块,只需向需要它的文件添加require语句。例如,如果一个模型需要访问一个模块,则添加:

require 'mymodule'

在模型的顶部。rb文件。

从Rails 2.3.9开始,在config/application中有一个设置。Rb,您可以在其中指定包含要自动加载的文件的目录。

从application.rb:

# Custom directories with classes and modules you want to be autoloadable.
# config.autoload_paths += %W(#{config.root}/extras)
# Autoload lib/ folder including all subdirectories
config.autoload_paths += Dir["#{config.root}/lib/**/"]

快速提示:自动加载lib目录包括所有子目录,避免延迟加载

请注意,lib文件夹中包含的文件仅在服务器启动时加载。如果你想轻松地自动重载这些文件,请阅读:Rails 3快速提示:在开发模式下自动重载lib文件夹。请注意,这并不适用于生产环境,因为永久重新加载会降低机器的速度。

从Rails 5开始,建议将lib文件夹放在app目录下,或者为文件夹创建其他有意义的名称空间,如服务、演示器、功能等,并将其放在app目录下,以便由Rails自动加载。

请检查这个GitHub讨论链接。

有几个原因可能会导致从库中加载时出现问题-详情请参阅这里- http://www.williambharding.com/blog/technology/rails-3-autoload-modules-and-classes-in-production/

修复自动加载路径 线程安全的相关 相关的命名 ...