【问题标题】:Should I copy/paste all controllers and routes from Spree to my own app?我应该将 Spree 中的所有控制器和路由复制/粘贴到我自己的应用程序吗?
【发布时间】:2019-01-28 16:22:17
【问题描述】:

我正在学习 RoR,显然 Spree 和我不清楚的事情很少。我也不完全熟悉 Rails 引擎。

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

另外,我注意到有些人使用 Deface 覆盖他们自己的应用程序中的内容。从github代码复制/粘贴然后修改它不是更容易吗?还是有一些技巧?

谢谢

【问题讨论】:

  • 它们将由 spree gem 添加,您无需手动复制它们,除非您正在执行某种时髦的手动安装或其他操作。仅供参考,gem 的工作方式是它们反映您的目录结构,然后添加 gem 正在完成的任何工作所需的代码,因此您无需从他们的 github 手动复制内容。
  • 附带说明:在尝试实施 Spree 之前先了解 RoR。这不是一个很好的初学者项目 - 支付门户是一个难以破解的难题。

标签: ruby-on-rails ruby spree


【解决方案1】:

gems 的整体理念是它们是包分发机制,您可以使用它来代替复制粘贴代码。

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

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

  1. 复制粘贴容易出错且繁琐。
  2. 供应商代码不会使您的代码库变得臃肿,从而更易于维护。
  3. 包管理器可以进行依赖关系树解析,以确保您的依赖关系相互兼容。
  4. 现在不是 1995 年,复制粘贴库会让人怀疑您的能力。

如果您出于任何原因需要修改 gem,您可以分叉存储库并告诉捆绑程序使用您的分叉。但在大多数情况下,这是最后的手段,因为 Ruby 是一种极其灵活的语言。

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

没有。只需安装宝石。它很可能是非常可配置的,并提供选项来根据您的意图对其进行自定义,而无需更改任何 gems 代码。

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

Deface 用于在渲染后修改视图。它基本上是使用正则表达式的更精致的版本,因此如果可以通过使用部分或帮助程序首先解决问题以使代码更加模块化,那么它就相当hacky了。它与路由或控制器无关。

【讨论】:

    猜你喜欢
    • 2020-04-28
    • 1970-01-01
    • 2022-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多