元编程有副作用时如何重构?

我正在使用Ruby on Rails 3.2.9和Ruby 1.9.3-p125。 在我之前的问题之后,我最终得到了一个关于元编程自编码的acts_as_customizable插件的问题,因为相关的代码对其他类有副作用 ,而不是“充当可自定义的”。

总结一下这个问题:为Article模型“内部”(通过元编程)声明的acts_as_customizable方法为Comment模型添加了一个customize方法,为了节省时间,Rails不会在启动时加载所有这些类,使应用程序引发NoMethodError - undefined method 'customize' for # 直到加载Article类。

建议的解决方案是在Comment模型中的require_dependency 'article' ,但我正在寻找另一种方式(也许,更好的建议的方式)让应用程序正常工作,但没有任何问题像在这个问题中解释。 也就是说,我想保留一个*短代码**和相同的行为,但使用更“合适”的方式来制作东西,可能会改变类的加载过程或计划对整个代码进行大量重构,如果有必要的话。

我应该如何处理这种情况? 你有什么想法?


更新 :经过一些研究,我发现问题仅出现在开发模式中,因为config.cache_classes设置为false使得每个请求都要重新加载类。


注意 :我想指出元编程在我的案例中非常有用, ArticleComment类在的“定制”概念方面彼此高度相关。 所以我想找到一个解决方案来缓解对基础行为的改变


*就我而言,元编程(即使它有副作用)使我避免了很多代码语句。