とっても便利な Kernel#acquire, __DIR__

Ramazeさんのとっても便利な Kernel#acquire を紹介してみたいと思います。acquire は簡単に言えば require のようなものですが、require とは違って次のようにして複数のライブラリを一気に呼び出すことが出来ます。

acquire 'lib/**/*'

これで ./lib 以下にある拡張子 .rb, .so なライブラリがごそっと読み込まれます。ちょっと便利だと思いませんか?もちろんこういうのが気持ち悪いと思う人は普通に require すれば良いだけですから安心して下さい。Ramazeさんは、Rails における ActiveSupportWaves における AutoCode のようなオートロードを行なわないので、そういう点で簡単お手軽にライブラリをロードしてくれる acquire の存在価値はあると思います。

また Kernel#__DIR__ も便利です。これは __FILE__ と似ていますが、そのまま __FILE__ のディレクトリ版だと思えば良く、スクリプトディレクトリ名を返してくれます。というわけで、これを使えば、

acquire __DIR__/:controllers/:*

のように書けます。ここでさらっと "/" を使っていますが、これは Symbol#/, String#/ で、:a / :b や "a" / "b" が "a/b" となります。これはなかなか便利に使えると思います。

ちなみにこうしたいわゆる monkey patch は lib/ramaze/snippets 以下に定義されておりますので、他にどのようなものがあるのか気になる方は是非ともご覧下さい。Ramazeさんは驚き最小限の原則により数は限定されており、そんなに多くはありません。今回紹介した acquire, __DIR__, Symbol#/ に関しては次のファイルをご覧下さい。

  • lib/ramaze/snippets/kernel/acquire.rb
  • lib/ramaze/snippets/kernel/__dir__.rb
  • lib/ramaze/snippets/divide.rb