7

私はDjangoを少し使ったことがあり、そのプロジェクト/アプリケーションモデルがとても気に入っています。1つ以上のDjangoアプリケーションをアセンブルすることでDjangoプロジェクトを構築できます。これらのアプリケーションは自律型にすることも、一部のアプリケーションを他のアプリケーションの上に構築することもできます。アプリケーションは、別のアプリケーションのモデル、そのコントローラー(Djangoの男はそれらを「ビュー」と呼びます)、さらにはそのビュー(Django-speakの「テンプレート」)に簡単に依存できます。

私は現在、比較的大規模なRuby on Railsプロジェクトに取り組んでいますが、Railsで同じことを行う簡単な方法が明らかにないことに驚いています。基本的に、Railsでは、1つのプロジェクト=1つのアプリケーションです。私たちのプロジェクトは巨大なモノリシックアプリとして始まり、現在、それをより小さなチャンクに分割する方法を見つけようとしています。

たとえば、現在のアプリケーションでは、(とりわけ)パートナーと契約を管理できます。パートナー(住所、連絡先など)を管理する「Partners」アプリケーションと、パートナーとの契約を管理する「Contracts」アプリケーションが欲しいのですが。「Contracts」アプリケーションは「Partners」アプリケーションに依存します(ただし、循環依存を回避するために、「Partners」アプリには「Contracts」アプリの知識がないようにします)。

今のところ、主なオプションとして次のように見えます。

  1. これらのアプリケーションをRESTリクエストを介して通信させます(各アプリはWebサービスとして機能します):これは素晴らしいことですが、他のアプリケーションのビューの再利用を禁止しているようです。たとえば、「Partners」アプリにパートナーの詳細を表示するための優れたページがあり、契約の詳細ページの中央に少し変更したそのページを表示したい場合、他に方法はありません。これは、「契約」アプリが「パートナー」アプリにRESTリクエストを介してパートナーの詳細を要求し(ビューではなくオブジェクト表現を取得します)、パートナー詳細ページのソースコードを「 「パートナー」アプリから「契約」アプリへ。
  2. これらのアプリケーションをプラグインに変えてください:それほど良くはなく、少し難しいですが、モデルとビューの再利用を可能にするようです
  3. svn externalを使用して、アプリケーション間でいくつかのモデルを共有します。単純ですが醜いです。

アドバイスありがとうございます。

4

4 に答える 4

5

これは私もできるようにしたいことなので、4つの不完全で比較的テストされていない(私が)「ソリューション」を提供できます。

順不同で・・・

  1. どうやら 2.2 で動作するようになった Railsエンジンプラグインを使用します。これは、ある程度、または完全に Rails 2.3 に組み込まれる可能性があります (以下を参照)。

  2. 探しているものを提供する「スライス」と呼ばれるものがあるMerbに切り替え ます。とにかく、 これ が正しければ (そして、Yehuda Katz を疑うのは誰でしょうか?) とにかく、いつの日かすべてが同じになるでしょう。これは素晴らしいことです。

  3. Edge Rails のエンジン機能を見てみましょう(「Edge」は最新のコミットされたがリリースされていないバージョンであるため、通常は動作しますが、まだ 100% の製品品質ではない可能性があります)。

  4. routes.rb で名前空間を使用することを検討してください。名前空間内にアイテムを割り当てるというappことは、関連するサブディレクトリ内のサブディレクトリにアイテムを配置できることを意味しますapp

このうち(2)は(インフラ的に)Railsに縁があるので未経験ですが、まあRailsは好きです。次のメジャー リリースを展開する前に 2.3 がリリースされる可能性があるため、(1) とおそらく (3) を検討する予定です。(4) を試しました。少し(私には)混乱しています。

于 2008-12-24T09:28:33.587 に答える
2

私はdesertプラグイン(以前の「pluginsplus」)を使用しました。それはかなりうまくいくようです。 http://github.com/pivotal/desert/tree/master

于 2008-12-29T04:31:11.203 に答える
2

Mike の 2 番目のオプションを調査したい場合、Merbは、役立つトピックに関するスクリーンキャストがあることをスライスします。

于 2008-12-24T17:24:15.343 に答える
-2

RoRで私が見ているのは、「アプリケーション」をRailsのコントローラーとして作成することです。彼らは完全に独立している可能性がありますが、ヘルパーや意見を共有することができます。Djangoを知らないので、用語が違うかもしれません。

于 2008-12-24T09:02:01.223 に答える