Happy Hacking RubyGems

これはRuby Advent Calendar 2011の22日目の記事です。
21日目はid:gnarl (@todesking) さんの モナドという言葉を使うことなく、純粋関数型言語の入出力を解説する。Rubyで。 - <s>gnarl,</s>技術メモ”’<marquee><textarea>¥でした。

RubyGemsのアップデート

ちゃんとRubyGemsのアップデートをしていますか? RubyGemsのアップデートはrubygems-updateというgemとして配布されています。きちんとgem updateしましょう

RubyGemsのプラグイン

RubyGemsは1.3.2以降、プラグイン機構を備えています。これはそれぞれのgemのload pathにあるrubygems_pluginというファイル (拡張子はKernel.#requireのそれに準じます) をRubyGemsが読み込むだけのシンプルな仕組みです。

RubyGemsのフック

また、RubyGemsはフック機構が用意されています。

post_build

Gem::Installerのインスタンスを引数として渡されます。
拡張ライブラリがビルドされた後、できあがった実行ファイルが配置される前に呼ばれます。

ブロックがfalseを返した場合、インストールが失敗します。

post_install

Gem::Installerのインスタンスが引数として渡されます。
gemがインストールしたあとに呼ばれます。

post_reset

ちょっとよくわからないです。

post_uninstall

Gem::Uninstallerのインスタンスが引数として渡されます。

pre_install

Gem::Installerのインスタンスが引数として渡されます。
ブロックがfalseを返した場合、インストールが失敗します。

pre_reset

ちょっと (ry

pre_uninstall

Gem::Uninstallerのインスタンスが引数として渡されます。

RubyGemsのプラグインの例

簡単ですがこんなのを作りました。動くサンプルとしてどうぞ。