6

Ruby on Railsにソーシャルネットワーキングサイトを構築する必要があります。サイト内の機能は時々変更されることがあります。機能を追加/削除する必要があります。さらに、私たちは別のソーシャルネットワーキングサイトを構築しているかもしれません。これらの理由から、私たちはRoRのソーシャルネットワーキングサイトの基本的なフレームワークを、フレームワークへの拡張機能のインストールまたはアンインストール機能とともに構築することを考えています。Ruby on Railsでプラグインアーキテクチャを使用するにはどうすればよいですか?

私は以前Joomla!で作業しました!拡張機能を追加/削除するためのCMSとそのアーキテクチャは、私が見ているもののようなものです。 Joomla!で通常は管理者側から拡張機能を追加/削除/カスタマイズできます。

私はRoRが初めてで、これを行う方法を決定するのが少し難しいと感じました。どんな助けもありがとう。

+0

RailsはJoomlaよりも少し低レベルです...インフラストラクチャの一部を自分で構築するか、既存のRailsアプリケーションを使用する必要があります。 –

+0

@Toby - あなたがコメントしたときにおそらく更新していました。 Railsが間違いなく下位レベルであることに私は同意します @Shree - RedmineとADVA CMSに特に注意することができることのいくつかの例を見てください – Spasm

答えて

15

UPDATE 2015: http://guides.rubyonrails.org/engines.html

エンジンがされています。これは2009年に答えた多くの

プラグインを使用すると、エンジンに必要なすべての情報についての宝石とエンジン に取って代わられている変更されましたあなたのレールアプリのためのカプセル化された再利用可能なコードを構築する素晴らしい方法です。開発側のレールエンジンおよび/またはプラグインのリファレンス

ため

オリジナル回答は、あなたが探しているものと考えられます。

Rails Engines are small subsets of an application that can be dropped into any of your Rails applications and handle common parts of the application from scratch.

セイ例えばソーシャル・ネットワーキング・アプリケーションは、ウィキを持っている、ブログ、チャットルームなどあなたがより可能性が高いWikiエンジン、ブログエンジンとチャットルームのエンジンを作成したいと思います。

エンジンを使用すると、異なるアプリケーション内でそのような機能を再利用できるため、自分自身を繰り返す必要はありません。

は見てみましょう:http://rails-engines.org/

Some support for ‘engine’ plugins has been merged into the Rails core codebase in Rails 2.3.

また、私はgithubの上で言うと、人々はエンジンを使用している方法を見て、いくつかの公共事業でご覧になることをお勧めします。

いくつかのエンジンを見てみましょう:

機能の面では、あなたはまだ、すなわち特定の機能を活性化できる管理エリアを持つことができます。あなたのブログやWikiは、権限/ロールシステムを使ってそのようなエリアにユーザがアクセスできるようにします。

あなたはWordpressのか、Joomlaの中のような拡張機能のいくつかの種類をサポートしているCMSを構築したいなら、あなたはそれを構築し、義務づける方針を提供するために、いずれかの必要があります少なくとも、ユーザーの視点からEngines/Pluginsをアップロード/インストールする方法を検討する必要があります。この

Redmineのセキュリティへの影響について

わからないが、その素晴らしいアプリケーションにこの種の機能を入れています。あなたは最後にAdva_CMSは基本的に、このアプローチを採用しており、そのCMSアプリケーションのa number of Engines

HTH

4

エンジンはまだにかなりベタな方法です作成したヒントや手がかり

ためsource code周りを掘るすることもできますその情報を入手する新しい場所はここにあります:http://guides.rubyonrails.org/engines.html

しかし、あなたが必要とするのは本当にアプリケーション固有です。多くのアプリケーションでは、時間の経過とともにこれらの機能が有機的に開発されます。彼らは手作業でこれらのいくつかを作ってから、ソフトウェア設計パターンに沿ったパターンを見つけてから、プラグインフレームワークを開発するまで定期的にそれらを再因子付けします。

エンドユーザーにインターフェイスを公開しようとしていますか?サードパーティの開発者には?これらのプラグインによってアプリケーションのどの部分が制御されていますか?プレゼンテーション層ですか?それはデータモデルに影響しますか?どんな種類の外部インターフェースを公開しても、あなたが守るべき契約を開発しているという事実を考えてみましょう。

これらのデザインパターンは、http://en.wikipedia.org/wiki/Software_design_patternです。開発プロセスの管理方法を理解するのに役立ちます。あなたが内部使用のためのプラグインで作業しているのであれば、それらの本当の目的は何ですか?モジュールと異なる点は何ですか?

関連する問題