【问题标题】:Include a gem's code as part of a rails project将 gem 的代码包含在 rails 项目中
【发布时间】:2016-03-22 15:57:38
【问题描述】:

我的 rails 4 项目依赖于以 gem 形式加载的 Comfortable Mexican Sofa (CRM)。 我签出了这个 gem 作为我的 git 存储库的子模块。

展望未来,这个 gem 正在成为我项目的一部分:我正在向它添加功能 这取决于我的项目的类别。

我想将此 gem 保留为子模块(以便能够从 主存储库),但仍然能够添加依赖于我的项目的代码。

实现这一目标的最干净的方法是什么? (例如,我应该将整个 gem 子模块放入我的 lib 文件夹吗? 我应该把它作为宝石引用吗?等等……)

【问题讨论】:

  • 您应该能够将其保留为 gem,并在您的应用中根据需要进行覆盖。
  • 目前这工作正常,但在我的代码和这个 gem 的代码之间建立双向依赖关系似乎不是一个好主意。

标签: ruby-on-rails


【解决方案1】:

我应该把它作为宝石引用吗

是的,您需要将其作为 gem 引用。

使用外部库的一个好处是它们由一群非常聪明的人维护(大部分时间)。您不太可能像 gem 所有者等那样使您包含的子模块保持最新。

您最好做的是覆盖 gem 的特定部分(例如,有多少人使用自己的控制器覆盖 Devise 功能),或者查看如何为 gem 创建 API,您可以从中填充你的应用程序。

【讨论】:

  • 我想他可以 fork gem 并将他的功能添加到他的 fork 中,然后他可以在 gem 发生更改时合并它们。
  • 可能,但这意味着你必须时刻掌握它。最好的方法是让 gem 代码更新,然后通过自己的应用程序添加到它。
【解决方案2】:

对我来说,在开发中,分离总是比绑定更好。我建议将其保留为 gem 并在单独的存储库中开发。

【讨论】:

  • 这就是我现在的做法,但我并不满意。我对此问题添加了评论。
猜你喜欢
  • 1970-01-01
  • 2013-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多