【问题标题】:How do Rails 3 and RefineryCMS manage and release multiple gems from the same Git repo?Rails 3 和 RefineryCMS 如何从同一个 Git 存储库管理和发布多个 gem?
【发布时间】:2026-02-06 21:00:01
【问题描述】:

我正在试验一个 Rails 应用程序的设计,它将大部分功能委托给高度专业化的引擎。但是,可能会有 10 个左右的引擎,我绝对不想管理 10 个不同的 gem 和 Git 存储库。

Rails 和 RefineryCMS 似乎都将所有子模块都存放在一个 git 存储库中,但随后以某种方式将它们作为独立的 gem 发布,并要求它们全部使用 - 在 Rails 的情况下 - 一个简单的require 'rails/all'

我当然浏览了源代码,但我可以使用更有经验的眼睛寻求帮助...谁能告诉我这个多宝石、一个 repo 架构是如何工作的?

【问题讨论】:

  • 你确定它们都在一个 git repo 中吗?例如,博客引擎似乎位于与核心 CMS 不同的单独存储库中。
  • 核心引擎(页面、图像、资源、设置等)都在主resolve/refinerycms repo中

标签: ruby-on-rails ruby-on-rails-3 modularity rails-engines refinerycms


【解决方案1】:

这很简单,http://github.com/resolve/refinerycms 每个 gem 都有一个文件夹。在这些文件夹中,您会找到 gemspec,因此构建 gem 就像 cd 到这些目录并运行 gem build 一样简单。

然后,主要的https://github.com/resolve/refinerycms/blob/master/refinerycms.gemspec 只是将所有这些其他 gem 列为依赖项。

【讨论】: