hellkite 日記と雑記とメモ。

Shiki Kazamaの駄文と音楽と、時々技術な感じ

ライブラリの再読み込みが可能なload関数


スポンサーリンク


ライブラリ*1を作っているときに動作確認をirb上でやっていました。
で、ライブラリをirb上に読み込むときにはrequireを使っていたんですが・・・

require 'lib/library'
=> true


で、検証作業をしているとライブラリに問題があって動かない・・・
ちょこちょこっと修正して、さて再度読み込もうとしてもう一度requireすると弾かれてしまいます。

require 'lib/library'
=> false


こんなとき、irbをいちいちexitしていて効率が上がらず困っていました。
が、マニュアルを読んでいたら、ちゃんとありました。再読み込みが可能な関数、load。

「require と load の違いについて」

require は同じファイルは一度だけしかロードしませんが、 load は無条件にロードします。また、require は拡張子 .rb や .so を自動的に補完しますが、load は行いません。 require はライブラリのロード、load は設定ファイルの読み込みなどに使うのが典型的な用途です。
Ruby Reference Manualより抜粋

load 'lib/library.rb'
=> true
load 'lib/library.rb'
=> true


irbでやるより、ちゃんとテストユニットを書け、という話ですけど・・・。
本当に実現できるのかどうかっていうお試し段階だとirbが便利なのでつい使ってしまいますね。これまで、いちいちirbを落としていたのですが、それがなくなりました。

*1:・・・と言ってもただのラッパーなんだけど・・・