我正在使用Ruby on Rails 3.2.9和Ruby 1.9.3-p125。在我previous question结束之后我发现了一个关于元编程自编acts_as_customizable
插件的问题,因为相关代码在其他类上具有副作用而不是“可自定义” ”
总结一下问题:acts_as_customizable
模型“内部”(通过元编程)的Article
方法为customize
模型添加Comment
方法,并在为了节省时间,Rails不会在启动时加载所有这些类,使应用程序引发NoMethodError - undefined method 'customize' for #<Comment:0x0...>
,直到加载Article
类。
建议的解决方案是require_dependency 'article'
模型中的Comment
,但我正在寻找另一种方式(可能更好的建议方案)让应用程序正常工作,但没有任何问题,就像在这个问题中解释的那样。也就是说,我想保留一个*短代码**和相同的行为但是使用更“合适”的方式来制作东西,可能会更改类的加载过程或计划大量的重构如有必要,整个代码。
我该如何处理这种情况?你怎么看?
更新:经过一番研究后,我发现问题仅出现在开发模式中,因为config.cache_classes
设置为false
,使每个请求都重新加载类。
注意:我想指出元编程在我的案例中非常有用,Article
和Comment
类在方面彼此高度相关我的“定制”概念。所以我想找到一个解决方案来减轻对基础行为的改变。
*在我的情况下,元编程(即使它有副作用)使我避免了很多代码语句。