2012-05-12 18 views
2

ここでは、複数のRailsアプリケーション間で特定のモデルを共有する必要のある小さなクローズドソースプロジェクトのシナリオを示します。基本的には、1つのDBと複数のアプリの読み込み/書き込みが別々の方法で行われますが、すべて同じインターフェースを通じて行われます。私は、このDALのコードを1つの場所に実装し、それを必要とするすべてのプロジェクトと何らかの形で共有したいと考えています。Railsのコード共有:gem vs plugin vs submodule?

VCSとしてgitを使用していると仮定して、最新のRailsバージョンでこれを行う最適な方法は何ですか?あなたが常に読んでいる3つの候補は、宝石(あなた自身の宝石サーバーをホストしていると仮定すると、内部使用のためだけに作成できると理解しています)、Railsプラグインとgitサブモジュールです。

私は3つのオプションすべてを考慮して、別のものを選択したい理由の概要を見つけることができませんでした。皆さんが私を助けてくれることを願っていました!

ありがとうございました!

答えて

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)を見てください。これは、アプリケーション用に宝石をキャッシュする方法です。 – x1a4

2

いくつかの一般的なコードを宝石にカプセル化することは、今日の良い習慣です。 Gemfuryがあり、プライベートな宝石を保管するサービスを提供する「プライベートな宝石クラウドサーバー」として宣伝しています。

関連する問題