2011-11-07 9 views
1

私は2つのRailsアプリケーションを持っています。そのデータはかなり相互依存しています。 Djangoの別のアプリケーションのモデルに簡単にアクセスしたり、他のアプリケーションを共有したりする必要があった場合、これは簡単でした。私は両方のアプリケーションをプロジェクトに組み込み、他のアプリケーションのモデルをインポートするだけです。その時点で、私はちょうどDjangoのORMを使って他のアプリケーションのデータベースにあるオブジェクトにアクセスすることができました。それは一貫して素晴らしいものでした。Railsアプリケーション間でデータにアクセスするためのベストプラクティス?

Railsでは、これを行う方法は、他のアプリケーションが要求したいそれぞれのアプリケーションのRESTful APIフックを作成することであるという圧倒的な感触を得ています。清潔で十分なモジュール式のようだが、次のように私は状況を持っているので厄介取得し始めています:

  • アプリケーションAがアプリケーションBからデータをフェッチする必要があるアプリケーションに

    1. メイクGETリクエストをので、GETを作りますアプリケーションBのAPIフックに要求する。
    2. Bのコントローラの機能の一部として、Aのデータモデルの一部であるデータが必要なため、Aに要求する。
    3. ステップ2-3が連続して起こっている

    これはスケーラビリティの悪夢を作り出していることは明らかです。このケースでは、新しい要求が完了するのを待っている新しい競合条件のために要求がタイムアウトしますが、新しい要求が完了するまで決してなりません。より多くのWebサーバープロセスをスピンアップすることができますが、これらのアプリケーションを両方とも維持すると、余計なGETリクエストを必要としない、これを行うためのより良い方法が必要になったようです。

    最終的に私の質問は、1)GETリクエストを発行するよりも、別のRailsアプリケーションのデータを入手するためのより直接的なアプローチがあるのか​​、それとも実際には素晴らしいデザインのものを使用しようとしているのでしょうか? 2)デザインパターンの穀物と戦っていて、これが本当に素晴らしいアプローチである場合は、これらのアプリのデータを互いに依存関係を保つのを助ける一般的なアドバイスがありますかこのような条件?私は、アプリケーションBが必要とする情報をAフロント(これは今のところ1つのフィールドに過ぎませんが、後でもっと多くの情報が必要です)に渡すことができることを理解していますが、それはです。

  • +1

    は、アプリケーションBが完了するまでに、アプリケーションAからのデータを必要としている場合アプリケーションAからのリクエストなぜアプリケーションBへのリクエストとともにそのデータを渡すだけではないのですか? –

    答えて

    2

    共有データ/モデルの大部分がある場合は、これらのモデルをgem/pluginに入れて、両方のアプリケーションで使用します。ただし、DBOはアプリケーションごとに設定してください(IMO)。

    もしそれらが密接に織り込まれているのであれば、どちらか一方または両方のアプリが正しく機能していると100%は確信していません。

    +0

    私はそれを宝石にすることが完璧な候補だと思います。問題のコードは、短いリンクの作成/追跡を処理する1つのアプリケーションのモジュールです。今ではそれが独自のモジュールである必要があるほど重要です。ありがとう! – Aaron

    +0

    @Aaron問題ありません。数週間前にメインアプリケーションの管理部分を分割したいときにも同じことをやっただけです。 –

    関連する問題