私はDjangoを少し使ったことがあり、そのプロジェクト/アプリケーションモデルがとても気に入っています。1つ以上のDjangoアプリケーションをアセンブルすることでDjangoプロジェクトを構築できます。これらのアプリケーションは自律型にすることも、一部のアプリケーションを他のアプリケーションの上に構築することもできます。アプリケーションは、別のアプリケーションのモデル、そのコントローラー(Djangoの男はそれらを「ビュー」と呼びます)、さらにはそのビュー(Django-speakの「テンプレート」)に簡単に依存できます。
私は現在、比較的大規模なRuby on Railsプロジェクトに取り組んでいますが、Railsで同じことを行う簡単な方法が明らかにないことに驚いています。基本的に、Railsでは、1つのプロジェクト=1つのアプリケーションです。私たちのプロジェクトは巨大なモノリシックアプリとして始まり、現在、それをより小さなチャンクに分割する方法を見つけようとしています。
たとえば、現在のアプリケーションでは、(とりわけ)パートナーと契約を管理できます。パートナー(住所、連絡先など)を管理する「Partners」アプリケーションと、パートナーとの契約を管理する「Contracts」アプリケーションが欲しいのですが。「Contracts」アプリケーションは「Partners」アプリケーションに依存します(ただし、循環依存を回避するために、「Partners」アプリには「Contracts」アプリの知識がないようにします)。
今のところ、主なオプションとして次のように見えます。
- これらのアプリケーションをRESTリクエストを介して通信させます(各アプリはWebサービスとして機能します):これは素晴らしいことですが、他のアプリケーションのビューの再利用を禁止しているようです。たとえば、「Partners」アプリにパートナーの詳細を表示するための優れたページがあり、契約の詳細ページの中央に少し変更したそのページを表示したい場合、他に方法はありません。これは、「契約」アプリが「パートナー」アプリにRESTリクエストを介してパートナーの詳細を要求し(ビューではなくオブジェクト表現を取得します)、パートナー詳細ページのソースコードを「 「パートナー」アプリから「契約」アプリへ。
- これらのアプリケーションをプラグインに変えてください:それほど良くはなく、少し難しいですが、モデルとビューの再利用を可能にするようです
- svn externalを使用して、アプリケーション間でいくつかのモデルを共有します。単純ですが醜いです。
アドバイスありがとうございます。