由于最新的Rails 3版本不再从lib中自动加载模块和类, 最好的装货方式是什么?
从github:
在这次提交中做了一些更改: 不自动加载代码在*lib*的应用程序(现在你需要显式 要求他们)。这使得应用程序的行为更接近于引擎 (lib中的代码仍然是自动加载插件);
由于最新的Rails 3版本不再从lib中自动加载模块和类, 最好的装货方式是什么?
从github:
在这次提交中做了一些更改: 不自动加载代码在*lib*的应用程序(现在你需要显式 要求他们)。这使得应用程序的行为更接近于引擎 (lib中的代码仍然是自动加载插件);
当前回答
有几个原因可能会导致从库中加载时出现问题-详情请参阅这里- http://www.williambharding.com/blog/technology/rails-3-autoload-modules-and-classes-in-production/
修复自动加载路径 线程安全的相关 相关的命名 ...
其他回答
有几个原因可能会导致从库中加载时出现问题-详情请参阅这里- http://www.williambharding.com/blog/technology/rails-3-autoload-modules-and-classes-in-production/
修复自动加载路径 线程安全的相关 相关的命名 ...
配置。autooad_paths不适合我。我用另一种方法来解
Ruby on rails 3不会自动重载/lib文件夹中的代码。我把它放到ApplicationController里面
Dir["lib/**/*.rb"].each do |path|
require_dependency path
end
警告:如果你想从你的lib文件夹中加载“monkey patch”或“open class”,不要使用“autoload”方法!!
”配置。autoload_paths方法:仅在加载只在一个地方定义的类时有效。如果某个类已经在其他地方定义了,那么您就不能通过这种方法再次加载它。 “配置/初始化/ load_rb_file。Rb”方法:总是有效!无论目标类是一个新类,还是一个“开放类”或现有类的“猴子补丁”,它总是有效的!
详情请见:https://stackoverflow.com/a/6797707/445908
正确地拼写文件名。
认真对待。我和一个类斗争了一个小时,因为这个类是Governance::ArchitectureBoard,文件在lib/ Governance /architecture_baord中。rb (board中O和A的转置)
回想起来似乎很明显,但那是魔鬼在追踪。如果这个类没有定义在Rails基于修改类名而期望它所在的文件中,那么它就不会找到它。
从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)