酒と泪とRubyとRailsと

Ruby on Rails と Objective-C は酒の肴です!

Ruby の Require と ActiveSupportの自動requireについて

完全に時代から取り残されていますが、今更ながらに『パーフェクト Ruby』を読んでいます。

その中で、Rubyのrequireについてつい忘れがちになるので、備忘録メモを残しておきます。

またRailsのActiveSupportで自動requireしてくれる機能についても、Rubyスクリプトから簡単に書けそうなので、こちらも合わせて共有です。


Rubyの標準ライブラリとか、外部ファイルの読み込み

Rubyの標準ライブラリとか、外部ファイルを読み込む場合。

1
2
3
4
require 'erb'

# ローカルファイルのrequireは、'./'と書くべき
require './hoge'

Special Thanks

Ruby 1.9.2からは、ロードパスにカレントディレクトリが含まれなくなったそうなので、require ‘./’ としたほうがいいそうです。さっきハマってました。。。

Rubyでrbファイルをrequireするときはドットを打つと良さそう - アインシュタインの電話番号

実行ファイル絡みた相対パスで require

実行ファイル絡みた相対パスで require する場合は、require_relativeとします。

1
require_relative 'my_library'

$LOAD_PATHを追加

requireでは、$LOAD_PATHに登録されている探索パスから検索します。ということで、$LOAD_PATHにパスを追加すると、requireするときに相対パスにすることができます。

1
2
## 実行ファイルのあるディレクトリを$LOAD_PATHに追加
$LOAD_PATH << File.dirname(__FILE__)

RubyでActiveSupportの自動requireを使う

RailsのActiveSupportがやってくれる自動requireを、Rubyスクリプト内で実行する方法がかなり便利そうだったので共有!

1
2
require 'active_support/dependencies'
ActiveSupport::Dependencies.autoload_paths << "/path/to/my_library"

これで、 /path/to/my_library以下にあるファイルを自動でRequireしてくれるそうです。

Special Thanks

RailsじゃなくてもActiveSupportの自動require機能を使う - 昼メシ物語

所感

Rubyスクリプトを書く上で、基礎中の基礎だと思いますが今までちゃんと理解できていませんでした。ちゃんと理解してRubyスクリプトをしっかり使えるようになりたい!

おすすめの書籍