Plugging into Rails

http://jamis.jamisbuck.org/articles/2005/10/11/plugging-into-rails

http://dontstopmusic.no-ip.org/diary/20051012.html#p01

で触れられているけど、Railssvn headにvender/pluginsにRailsの振る舞いを変更するようなライブラリを入れておくことにより、簡単に拡張が可能になった。

今までRails本体に手を加えるようなライブラリの場合、RAILS_ROOT/libに置いてenviroment.rbでrequireしてからclass_evalなど使って変更してね、と云った感じで結構めんどくさかったんだけど、このPlugginsの仕組みで一気に解決。

ここら辺の拡張が最近svn headではよく取り入れられるようになった。というのはRails 1.0での大きな変更点の一つであろう、enviroment.rb周りの変更による影響が大きい。

いままでの0.13.1ではenviroment.rbにごちゃごちゃと初期化設定が書かれていたのだが、それらがすっぱり無くなり、かわりにinitalizer(Rails本体に付属)とboot(rails generatorが出力)を用いることにより簡略化された。そのため、Rails generetorを使って出力しても、Rails本体のinitializerに変更があった場合、それらの恩恵をすぐに預かることができ(いままではもう一度generateする必要があった)、そこらへんの開発が盛んになったというわけだ。

で、Plugginsの仕組みの実装なんだけど、これが極めて簡単で実装部分は10行ほど追加するだけで完了している。vender/plugins/ライブラリ/lib をロードパスに加えて、vender/plugins/ライブラリ/init.rb をevalで実行しているだけだ。で、このinit.rbに「enviroment.rbでrequireしてからclass_evalなど使って変更してね」と云った設定を記述しておくことで、ライブラリ利用者は配置するだけで使えるようになったのである。

ていうかRails 1.0はいつ出るのさっlol。0.13.1からはあまり機能拡張せずにバグフィックスだけして夏リリースの予定じゃなかったっけ、、、。