如果我要对其进行大量修改(Spree,Rails),我是否应该将引擎的代码添加到应用程序本身?
Should I add engine's code to the app itself if I'm going to modify it a lot (Spree, Rails)?
我正在使用 Spree 启动一个新应用程序,我将对其进行大量修改。
每次我需要更改某些内容时都去查找源代码似乎是不切实际的。
我应该只将 spree/front_end 引擎的粘贴内容复制到我的应用程序还是应该这样做:
Spree::Product.class_eval do
def some_method
...
end
end
class_eval一直在?
在我最近的 Spree 项目中,到处都是 class_eval。
这可能是您将如何维护 Spree 版本升级的问题(假设您将对其进行大量修改)。如果您对保持 Spree 版本保持最新很感兴趣,最好尝试使用 Deface 并尽可能少地进行猴子修补,将代码组织为扩展。
但是如果真的有很多变化并且能够升级 Spree 版本并不是那么重要(它曾经发生过)你不应该浪费太多时间。
无论如何,完全复制模型和控制器的优势较少-这足以修补所需的方法(但请记住,如果您升级但不直接更改方法,则可能会失败)。
但是视图(和污损)非常复杂,无法进行大量更改,因此您应该考虑完全复制它们(并记住这可能会破坏某些扩展)。
我正在使用 Spree 启动一个新应用程序,我将对其进行大量修改。 每次我需要更改某些内容时都去查找源代码似乎是不切实际的。
我应该只将 spree/front_end 引擎的粘贴内容复制到我的应用程序还是应该这样做:
Spree::Product.class_eval do
def some_method
...
end
end
class_eval一直在?
在我最近的 Spree 项目中,到处都是 class_eval。
这可能是您将如何维护 Spree 版本升级的问题(假设您将对其进行大量修改)。如果您对保持 Spree 版本保持最新很感兴趣,最好尝试使用 Deface 并尽可能少地进行猴子修补,将代码组织为扩展。
但是如果真的有很多变化并且能够升级 Spree 版本并不是那么重要(它曾经发生过)你不应该浪费太多时间。
无论如何,完全复制模型和控制器的优势较少-这足以修补所需的方法(但请记住,如果您升级但不直接更改方法,则可能会失败)。
但是视图(和污损)非常复杂,无法进行大量更改,因此您应该考虑完全复制它们(并记住这可能会破坏某些扩展)。