2012-04-29 9 views
8

私はapi呼び出しに応答するSinatraアプリケーションと、レポートを扱うRailsアプリケーションと、グラフやWebサイトのようなすべてのものを持っています。どちらも共通のモデル(アカウント、サイトなど)にアクセスする必要がありますSinatraとRailsの間のモデルコードを共有する

私の問題は、2つのアプリケーション間で効率的にコードを共有するにはどうすればよいですか?たとえば、SinatraのAccountsモデルを編集している場合、Railsアプリケーションで同じ変更を複製することを忘れたくはありません。私はむしろ2つのアプリケーションが別々のクラスタ上にあるのでRails Rackのマウントを使用しないでください。

私はStackOverflowののについての提案を見てきました:

  • Gitリポジトリモジュール
  • シンボリックリンク(私の同僚が使用するWindowsでは動作しません)
  • のRailsプラグイン(私はこれがシナトラで動作しないだろう)
  • ルビーの宝石(私はこれがちょうどモデルデータはあまりにも行き過ぎだと思うが、それは私だけです)

2つのアプリA別のリポジトリに戻ってください。基本的には、まずAPIを開発してから、Railsアプリケーションの後ろにアカウント固有のロジックを置いています(主に、Railsにはこうした種類の開発を容易にするライブラリがたくさんあるためです)。

どのようにこの問題を解決しますか?

+0

同じリポジトリにあるのか、別のアプリケーションになっていますか? –

+0

彼らは別のリポジトリにあります:)あなたはそれらが同じリポジトリにあることをお勧めしますか? – parasquid

+1

いいえ、オプションが少しずつ変更されているのに不思議でした。個人的には、gitモジュールかプライベートな宝石のいずれかが最良の選択肢だと思います。 –

答えて

4

私は宝石のために行くか、むしろ何かの宝石のように、あなたはそれを公開する必要はありませんし、Bundler git dependenciesを使用してください。私たちはこれをTravis CIで頻繁にやっており、特にBundler 1.2の新しい "ローカル" git依存関係ではうまくいきます。http://gembundler.com/man/bundle-config.1.html#LOCAL-GIT-REPOS

+0

これを明らかにするには、2つのアプリケーション間の共通点を宝石に取り入れる必要があります。 これが当てはまる場合、私はこの技術を使って調べて学ぶことができるリポジトリを知っていますか? :) – parasquid

+0

はい、そうです。別の方法としては、SinatraアプリとRailsアプリを同じプロジェクトに置くか、SinatraアプリにRailsアプリをロードさせる方法があります。例はhttps://github.com/travis-ci/travis-coreをご覧ください。 –

+0

私は、おかげで多くを参照してください! :) – parasquid

関連する問題