【发布时间】:2016-04-13 19:30:55
【问题描述】:
我的 Rails 应用程序(Rails 3 和 4 的编译)都有自己的数据库(自然而然),但也访问第 3 方数据库。因此,他们有这个第 3 方数据库的模型。我想干燥这些模型以便可重复使用,而不是在每个应用程序中复制粘贴它们。没有需要考虑的控制器、助手或路由;只有模型。但由于它有 Rails “部件”,这似乎表明我需要一个引擎。但我希望在我的所有应用程序中使用这些模型这一事实似乎表明只需要一个“普通”兼容 rails 的 gem。
将其作为 gem 还是作为 Rails 引擎会更好吗?
如果引擎更好,我不太确定从哪里开始。从我读过的一些指南来看,好像你在一个新的 Rails 应用程序上创建了一个引擎。我对full 和mountable 也有点不清楚,但我知道我希望这些模型在它们自己的命名空间中。
最后,我希望这些模型可以在我的所有应用程序中使用。引擎可以打包成 gem,对吗?如果是这样,那我就不能从 gem 开始,而不是从某个特定应用程序中的引擎开始,然后在事后导出 gem?
我很困惑,因此感谢任何反馈。我以前也从未构建过 gem 或引擎,所以请原谅这方面的任何愚蠢。
【问题讨论】:
-
为什么除了模型之外没有其他任何东西表明您需要引擎?无论如何,哪个“更好”取决于,其余的非常广泛。从edgeguides.rubyonrails.org/engines.html 之类的内容开始并提出非常具体的问题是否有意义?
-
@DaveNewton:对不起,我的意思是因为它有任何 Rails“部件”,所以(在我看来)它应该是一个引擎。
-
也许吧,虽然我不知道为什么会这样。如果它是一个 Gem,你也可以在 Rails 之外使用它(例如,命令行工具等),所以我倾向于这样做。
-
@DaveNewton:嗯,我看到的所有指南都提到“可重用 Rails 的东西 → 使用引擎”。这些是专门的 ActiveRecord 模型,因此(对我而言)在 Rails 之外使用它们没有意义。
-
我想,但是有很多 ActiveXxx 的东西可以在 Rails 应用程序之外使用。
标签: ruby-on-rails model rubygems dry