我正在学习RoR,显然Spree和一些事情对我来说还不清楚。我也不完全熟悉Rails引擎。
我的问题是我应该从Spree github页面复制所有控制器和路由,然后覆盖它们,还是已经通过引擎“启动”了?
此外,我注意到有些人使用Deface覆盖自己的应用程序中的内容。从github代码复制/粘贴然后修改它难道不是很容易吗?
谢谢
答案 0 :(得分:3)
gem的整体思想是它们是包分发机制,您可以使用它来代替粘贴代码。
大多数现代语言都有某种程序包分发。 Ruby的首选包管理器是Bundler。
应该始终使用它而不是粘贴粘贴,因为:
如果出于任何原因需要修改gem,则可以派生存储库并告诉捆绑程序使用您的派生。但是在大多数情况下,这是不得已的方法,因为Ruby是一种非常灵活的语言。
我的问题是我应该从Spree复制所有控制器和路由吗 github页面,然后覆盖它们,或者它们已经被“启动”了 通过引擎?
不。只需安装宝石。它极有可能是可配置的,并提供了一些选项,可以根据您的意图进行自定义,而无需更改任何gems代码。
或者在许多情况下,您可以仅使用object oriented programming来配置gem所提供的控制器的子类型。
Deface用于在渲染视图后对其进行修改。它基本上是使用正则表达式的一种更完善的版本,因此,如果可以首先通过使用partials或helpers来使代码更具模块化,则可以解决问题,因此相当麻烦。它与路由或控制器无关。