Yet Another Pragger -- BONNOH FRACTION 13
BONNOH FRACTION 13
世の中に寝るより楽はなかりけり
浮世の馬鹿は起きて働く

2008年06月12日(Thu)

Yet Another Pragger

Pragger を使っていてどうしても機能を拡張したいところがたくさん出てきたんだけど、 それを全部本家の人に要求するのもどうかと思った。


多くのソフトウェアの場合、最初はシンプルなんだけどどんどん周りの人の要求に応えているうちに複雑怪奇化し、 陳腐化し、そして誰も使わなくなるっていう道を辿ることはよくある。

Pragger のコアはシンプルであって欲しいので Yet another な Pragger 実装を作ってみることにした。

こっちはもう、シンプルにしようなんて考えず、欲望の限りw

なんつうか、 Plagger -> Pragger -> Yet another Pragger って、、もうね。。。

方針

自分の欲しい機能はどんどん取り込むけど、Pragger互換であること。

修正点

  • Class-based なプラグイン
  • コアに logger を取り込む
  • プラグインの検索/読み込みはロードパスベース
  • Plugin クラスを Yapra という名前空間に
  • Python habu ライクな設定ファイルのサポート

使い方

pragger として動きます。設定ファイルとかもそのままで。プラグインも互換あります。

たぶん。

ダウンロード

svn co http://www.fraction.jp/repos/yapra/trunk/ yapra

バグとか

たぶん私以外使うこと無いと思うけど。 バグとかみつけたらチケットきってください。

ライセンス

BSD修正ライセンス

Yuanying at 13時59分53秒 | Comments (7)

Comments

wtnabe at 2008-06-12 16:26

面白そうですね。試してみるです。必要な plugin だけを読み込む、テスト容易性の確保、なんかも修正点に入れてもらえると嬉しいです。

Yuanying at 2008-06-12 16:53

さっそく反応ありがとうございます!

ちなみにプラグインの読み込みはロードパスからモジュール実行時に行うように修正したので「必要な plugin だけを読み込む」ようになってると思います。

また、プラグイン自体もexecuteメソッドを持つ単なるRubyのオブジェクトだったらなんでもいいのでテストも簡単だと思います。書いてないけど…。

wtnabe at 2008-06-14 09:47

おかしいなぁと思ったら legacy_plugin の方は相変わらず全部読みに行く形ですね。まぁそうですよね。オリジナルの方で個々の plugin を動的に読み込む機能がないので、yarpa で実現してしまうと互換性がなくなってしまいますから。

Yuanying at 2008-06-14 14:24

最初は動的に読み込むように実装してたのですが、
どうも本家の人と話してみた感じ、
最初に全部読み込むのが仕様らしいのです。

そしてこれから最初に全部読み込むのを前提としたプラグインが追加される予定らしいので、
互換性のために最初に全部読み込むように修正してしまいました…。

軌道オプションで読み込み方法を変更できるようにしてみようかな。

Yuanying at 2008-06-14 21:19

ということで、advanceモードというのを実装してみました。

これは実行時に -m オプションを渡すことによって、

ruby yapre/pragger.rb -m advance

legacy_plugin の方も利用時にのみロードされるようになります。

wtnabe at 2008-06-15 07:51

time で計ると確かに軽くなってます。いい感じです。profile を取ってみると全体の傾向は変わってなくて、いちばん重いのは require や module_eval ではないみたいですけど、plugin が充実してくると効いてくるんじゃないかと思います。

Yuanying at 2008-06-15 22:55

試用ありがとうございます。

とりあえずやっておきたい拡張や修正はひとまず終わったので、もう少し軽くなるように修正していこうかな…。

Post your comment





About me

Avator

Mac 好き、自転車好き。日記はほぼ Mac と プログラムに関すること。

Categories