我应该复制/粘贴从Spree到我自己的应用程序的所有控制器和路由吗?

时间:2019-01-28 16:22:17

标签: ruby-on-rails ruby spree

我正在学习RoR,显然Spree和一些事情对我来说还不清楚。我也不完全熟悉Rails引擎。

我的问题是我应该从Spree github页面复制所有控制器和路由,然后覆盖它们,还是已经通过引擎“启动”了?

此外,我注意到有些人使用Deface覆盖自己的应用程序中的内容。从github代码复制/粘贴然后修改它难道不是很容易吗?

谢谢

1 个答案:

答案 0 :(得分:3)

gem的整体思想是它们是包分发机制,您可以使用它来代替粘贴代码。

大多数现代语言都有某种程序包分发。 Ruby的首选包管理器是Bundler

应该始终使用它而不是粘贴粘贴,因为:

  1. 粘贴粘贴容易出错且繁琐。
  2. 您不会在供应商代码中膨胀代码存储库,这使得维护更容易。
  3. 程序包管理器可以执行依赖关系树解析,以确保您的依赖关系彼此兼容。
  4. 现在不是1995年,复制粘贴图书馆将使您的能力受到怀疑。

如果出于任何原因需要修改gem,则可以派生存储库并告诉捆绑程序使用您的派生。但是在大多数情况下,这是不得已的方法,因为Ruby是一种非常灵活的语言。

  

我的问题是我应该从Spree复制所有控制器和路由吗   github页面,然后覆盖它们,或者它们已经被“启动”了   通过引擎?

不。只需安装宝石。它极有可能是可配置的,并提供了一些选项,可以根据您的意图进行自定义,而无需更改任何gems代码。

或者在许多情况下,您可以仅使用object oriented programming来配置gem所提供的控制器的子类型。

Deface用于在渲染视图后对其进行修改。它基本上是使用正则表达式的一种更完善的版本,因此,如果可以首先通过使用partials或helpers来使代码更具模块化,则可以解决问题,因此相当麻烦。它与路由或控制器无关。