Railsでは、 config/application.rb で
config.autoload_paths << Rails.root.join("lib")
と書いておくと、例えば
$ cat lib/my_library.rb class MyLibrary : end
みたいなファイルが置いてあれば、Railsアプリ内で MyLibrary クラスを特にrequireしなくても使える。これは ActiveSupport::Dependencies というクラスが const_missing をフックして、 autoload_paths にあるディレクトリの中から適切なファイルを自動requireしてくれるから。
これは大変便利なので、Railsじゃないアプリから使いたい。
やりかた
require 'active_support/dependencies' ActiveSupport::Dependencies.autoload_paths << "/path/to/your/library"
これだけで、これ以降のconst_missingで /path/to/your/library 以下に置いてあるファイルを自動requireしてくれるようになる。
今回の環境
- ruby 1.9.2-p0
- active_support 3.0.0