Rails を使用して、要件に合わせて構成できる拡張可能なモジュラー アプリケーションを構築したいと考えています。
「拡張可能」と「モジュラー」の下で私が理解していることを説明しましょう。たとえば、私がブログ アプリケーション エンジンで作業していてBlogEntry
、単純なブログ エントリに通常含まれるもの (タイトルとコンテンツ) を含む という名前のモデルがあるとします。このアプリケーションを 2 つのモードで実行できるようにしたいとします。
BlogEntry
タイトルとコンテンツの2つの属性のみを持つ単純化- 拡張モード
BlogEntry
では、 がより多くの属性を持つように拡張された場合、たとえば、 という名前の別のモデルと多対多でリンクされTag
ます。
私の目標は次のとおりです。
- 追加パッケージのインストール、構成スイッチの有効化/無効化、構成ファイル内の行のコメント解除など、いくつかの単純なメカニズムを使用して、エンド ユーザーが基本的な形式または拡張機能の形式でアプリケーションを展開できるようにします。 「モード」 - これらの追加機能はほとんど独立しており、そのうちのいくつかを同時に有効にすることができます。
- コードベースの明確な分離 - 基本機能のみを実装するものと、追加のプラグ可能なもの (既存のモデルまたは新しいモデルの追加属性など) を実装するもの。これらの変更は、モデル自体だけでなく、コントローラー、ビュー、gem 要件、テスト、ルーティング ルール、拡張機能モデルのサポートに必要なデータベース移行などにも反映する必要があります。
- モデル、コントローラー、およびビューにオブジェクト指向の原則を使用します。たとえば、基本モデル
BlogEntry
は単純なスタンドアロン クラスにすぎません。タグ機能をプラグインする場合、BlogEntry
クラスにはある種の拡張モジュールが含まれ、コードがBlogEntryController
追加され、特定のモデルに出力が追加されることさえあります。 blogentry のビュー内の指定された場所。
したがって、複雑な機能を必要としない場合、アプリケーションは非常にシンプルで基本的なままです。追加機能が必要な場合は、アプリケーションを複数のプラグインで拡張できるため、1 つのアプリですべてを行う巨大なブロートウェアにはなりません。
実際、このようなプラグ可能な機能は、MediaWiki、Moodle、WordPressなど、事実上すべての主要な高レベル Web 開発プラットフォームに存在します。
これまでに「モジュラーレール」を検索すると、次の結果が得られました。
- Rails エンジン - 基本的に、私の理解が正しければ、これは大きなアプリケーションをいくつかの小さな準独立したアプリケーションに分割し、それらの間にリンクを構築する方法です - それは私が望んでいるものではありません。これにより、いくつかの共通の Rails コードをいくつかの異なるアプリケーションで再利用することもできますが、これも私が望んでいるものではありません。
- Rails プラグイン - 基本的には、gem の形式で外部ライブラリをプロジェクトに簡単に含めるメカニズム (プラグイン提供のジェネレーターなどの追加機能を使用) ですが、プラグインとの広範な統合を必要とする開発者向けのソリューションです。これは一般に、エンドユーザー管理者がこの機能を必要とするかどうかを決定する必要があるスキームには適していません。有効または無効にする簡単な構成プロセスはありません。
- アプリケーション テンプレート- 基本的に、ジェネレーターにラップされた既製のアプリケーションで、そのようなアプリケーションをすばやく生成できます。これはコードの再利用には役立つかもしれませんが、構成可能なモジュール性の概念とは何の関係もありません。
私が話していることを達成する方法は無数にあるに違いありません。最高のものは何ですか?このようなモジュラー アプリケーションの良い例はどこにありますか?