7

Ruby on Rails でソーシャル ネットワーキング サイトを構築する必要があります。サイトの機能は随時変更される場合があります。そのため、機能を簡単に追加/削除する必要があります。さらに、別のソーシャル ネットワーキング サイトを構築している可能性もあります。これらの理由から、フレームワークへの拡張機能をインストールまたはアンインストールする機能を備えた、RoR でソーシャル ネットワーキング サイトの基本的なフレームワークを構築することを考えています。

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

私は RoR に不慣れで、これを行う方法を決定するのは少し難しいと感じています。どんな助けでも大歓迎です。

4

2 に答える 2

15

UPDATE 2015: これは 2009 年に回答されましたが、多くの変更がありました

プラグインは Gems と Engines に取って代わられました Engines で必要なすべての情報については: http://guides.rubyonrails.org/engines.html

エンジンは、Rails アプリ用のカプセル化された再利用可能なコードを構築する素晴らしい方法です。

参照用の元の回答

開発側では、Rails Engines および/またはプラグインがおそらく探しているものです。

Rails エンジンはアプリケーションの小さなサブセットであり、任意の Rails アプリケーションにドロップでき、アプリケーションの共通部分を最初から処理できます。

たとえば、ソーシャル ネットワーキング アプリケーションにウィキ、ブログ、チャットルームなどがあるとします。ウィキ エンジン、ブログ エンジン、チャットルーム エンジンを作成したいと思うでしょう。

Engines を使用すると、さまざまなアプリケーション内でそのような機能を再利用できるため、同じことを繰り返す必要はありません。

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

「エンジン」プラグインの一部のサポートは、Rails 2.3 の Rails コア コードベースに統合されました。

また、github で公開されているいくつかのプロジェクトを見て、人々がエンジンをどのように使用しているかを確認することをお勧めします。

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

読むのに役立つその他のリンク

機能面では、特定の機能をアクティブ化できる管理領域を引き続き使用できます。権限/役割システムを使用して、ユーザーがそのような領域にアクセスできるようにすることで、あなたのブログや wiki にアクセスできるようにします。

Wordpress や Joomla などの拡張機能をサポートする CMS を構築する場合は、それを構築してガイドラインを提供するか、少なくともユーザーの観点からエンジン/プラグインをアップロード/インストールする方法を調べる必要があります。

これのセキュリティへの影響についてはわかりません

Redmineは、この種の機能をすばらしいアプリケーションに組み込みました。ヒントや手がかりを得るために、ソース コードを掘り下げることをお勧めします。

最後に、Adva_CMSは基本的にこのアプローチを採用し、CMS アプリケーション用に多数のエンジンを作成しました。

HTH

于 2009-10-09T08:02:03.807 に答える
4

エンジンはまだかなり堅実な方法であり、それらに関する情報を取得するための新しい場所は次のとおりです: http://guides.rubyonrails.org/engines.html

しかし、本当に必要なのは、よりアプリケーション固有のものです。多くのアプリケーションは、時間の経過とともにこれらを有機的に開発します。これらのいくつかを手作業で作成することから始め、ソフトウェア設計パターンと一致するパターンが見つかるまで定期的にリファクタリングし、プラグイン フレームワークを開発します。

インターフェイスをエンド ユーザーに公開しますか? サードパーティの開発者に? アプリケーションのどの部分がこれらのプラグインによって制御されますか? プレゼンテーション層だけですか?データモデルに影響はありますか? あらゆる種類の外部インターフェイスを公開するときは、尊重する必要があるコントラクトを開発していることを考慮してください。

次の設計パターンを確認してください: http://en.wikipedia.org/wiki/Software_design_pattern。開発プロセスを管理する方法を理解するのに役立ちます。内部使用のためのプラグインに取り組んでいるだけなら、それらの本当の目的は何ですか? モジュールとの違いは何ですか?

于 2014-12-27T02:18:27.877 に答える