我通过包含一个模块来扩展一个类(位于插件中),这是在初始化程序中完成的。
require 'qwerty/core/user'
User.send :include, Qwerty::Core::Extensions::User
然而,在开发过程中,在每个请求之前(以及在控制台中调用 reload! 之后),所有模型都会重新加载,但由于初始化程序不会再次运行,因此不包含该模块。留下一个带有“缺失部件”的模型。
由于模型位于插件中,因此将代码直接包含在类中似乎并不明智(这是通常的方法)。
现在我只是添加了一个 before_filter ,其中包含开发环境中的模块。但我有复制/粘贴并有重复代码在初始化程序和应用程序控制器中。
# Class extensions in initalizers are over-writtern each request
def development_loading
if RAILS_ENV == 'development'
User.send :include, Qwerty::Core::Extensions::User
end
end
有没有更好的办法?
顺便说一句,该插件是我的,所以我可以向其中添加代码,但模块中保存的扩展可能并不总是存在......
环境.rb
config.to_prepare do
User.send :include, Qwerty::Core::Extensions::User
end
该代码是在开发模式下的每个请求之前以及在生产模式下运行一次的块。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)