我正在使用Spree开始一个新的应用程序,我将对其进行大量修改。 每次我需要改变一些东西时,去寻找源是不切实际的。
我应该只将 spree / front_end 引擎的粘贴内容复制到我的应用中,还是应该这样做:
Spree::Product.class_eval do
def some_method
...
end
end
一直class_eval ?
答案 0 :(得分:1)
在我最近的Spree项目中,到处都有 class_eval 。
这可能是一个关于如何维护Spree版本升级的问题(假设您要对其进行大量修改)。如果你对保持Spree版本最新版本感兴趣,那么最好尝试使用Deface,尽可能减少猴子修补,将代码组织为扩展。
但是,如果真的有很多变化,并且能够升级Spree版本(它曾经发生过)并不是那么重要,那么你就不应该浪费太多时间。
无论如何,完全复制模型和控制器的优势较少 - 这足以修补所需的方法(但要记住,如果升级并且没有直接更改方法,则可能会失败)。
但是视图(和Deface)变得非常复杂,所以你应该考虑完全复制它们(并记住这可能会破坏一些扩展)。