2012-05-12 32 views
2

以下是场景:需要跨多个Rails应用程序共享某个模型的小型闭源项目。基本上有一个数据库和多个应用程序以不同的方式读取/写入,但都是通过相同的界面。我想让这个DAL的代码只在一个地方实现,并以某种方式与所有需要它的项目共享。Rails代码分享:gem vs plugin vs submodule?

是什么做的,与最新版本的Rails,假设我使用Git作为VCS的最佳方法是什么?您经常阅读的三个竞争者是宝石(我知道它只能在内部使用,因为您拥有自己的宝石服务器),Rails插件和git子模块。

我一直没能找到原因,给所有三个选项的概述,一个可能要挑一个比另一个。我希望你们可以帮助我!

谢谢!

回答

3

我建议你使用宝石,并将它们捆绑在你的应用程序中。我们正在使用几个私人宝石,并将它们保存在vendor/cache目录中。

插件已过时,将被删除。 (我相信Rails 4.0会删除它们)它们也会导致警告。

使用子模块是一个有趣的想法,但我仍然会用宝石棒。

+0

这份指南或多或少与您的团队共同分享私人宝石? http://www.cerebris.com/blog/2011/03/15/creating-and-managing-private-rubygems-with-jeweler-github-and-bundler/ –

+0

我们在github上托管仓库,但是宝石本身通过'gem build'构建,然后直接包含到应用程序中,因此捆绑安装使用该版本,而不是每次都转到github。看看[bundle package](http://gembundler.com/bundle_package.html),这是我们如何缓存应用程序的gem。 – x1a4

2

现在,将一些常见代码封装到宝石中是一种很好的做法。有一个Gemfury,宣称自己是一个“私人宝石云服务器”,它提供了存储私人宝石的服务。