プラグインの仕様/実装案メモ(4/23更新)

・Railsのプラグインとしてインストール可能にする
 Subversionのレポジトリ利用など,Railsの機能が利用できるから

・インストール後にFoodyn CMSの管理画面で利用のオンオフをする(デフォルトオフ)
 プラグインはFoodynPlugin::Baseクラスの子クラスとして作りinit.rbでrequireしておく。このクラスはスタブであって,本体のコードは入らない。管理画面ではクラス一覧を獲得してそれを表示する。一覧の中でプラグイン・モデル(後述)に登録されていないものがあったら,自動的に登録する。
 プラグインの本体はFoodynPlugin::Mainクラスの子クラスとして記述する。
 管理画面で「オン」すると,インストールを実行する。具体的にはイベントの登録,スキーマの更新(プラグイン独自のテーブル,プラグイン・オプション)を行う。
 「オフ」にするとイベントは削除。スキーマはそのまま。「アンインストール」はイベントおよびデータを削除。init.rbも削除(ここまでしないと一覧時にまた表示されてしまうから)。
 「更新」はプラグインのコードを上書きしてから実行できる。イベントとスキーマ,プラグイン・モデル内のバージョン情報を書き換える。

・~~変数はNucleusと同様do_skin_varなどで実装する
 Ruby的にはパーサを拡張するような実装も可能だがスキン・エンジン依存になるため,なるべくやらない。

・イベントはevent_~~などのメソッド実装で登録
 管理画面上でプラグインをオンにするときに,そのプラグインのメソッドを舐めて調べる。

・PreItemを使うプラグイン用にPostUpdate系のイベントを用意
 アイテム表示のたびにPreItemで走査するのは無駄なので決まりきった変換(例えばWiki系の入力補助など)はアイテム登録/更新時に変換する。変換前のデータを保持するためアイテムの本文用にフィールドを追加。

・プラグイン・オプション
 プラグイン・オプションはブログ・オプションであればブログの拡張テーブル,アイテム・オプションであればアイテムの拡張テーブルに保存する。プラグイン本体のオプション用テーブルもある。

・独自管理画面
 Admin用のクラスを別に持たせる。Nucleusのようにプラグインに直にリクエストが行くのではなく,どこかで受けてから渡すほうがいいだろう。

・アクション
 これも一回システム側で受けてからプラグインを呼び出す方向。トラックバックのようなものはRESTのフォーマット追加でやりたいだろうと思うので,RESTのフォーマット追加やアクション追加ができるような仕組みを考えたい。
 
・スキーマの機能
 プラグイン・オプションとプラグインの独自テーブルは,RailsのMigrationと同様の機能で更新する。

・必要なデータ・モデル
 プラグイン管理用のモデルは,プラグイン名,バージョン,スキーマ・バージョン,オンオフ情報を登録
 イベント管理用モデルはプラグインIDとイベントの名前を登録
 プラグインオプションの説明モデルはプラグインID,オプション名,オプションの種類(ブログ,カテゴリー,…),データ・タイプ,デフォルト値,入力補助用データ
 プラグインオプションのデータ・モデルは,元モデルごと(ブログ,カテゴリー,…)にテーブルを用意する。


23 Apr, 2008 | Foodyn ( プラグイン , プラグイン ) | | Andy
« Prev item - Next Item »
---------------------------------------------

Comments


No comments yet. You can be the first!


Leave comment

© 2007 yoursite.com | Designed by DesignsByDarren
Ported to Nucleus CMS: Suvoroff