読者です 読者をやめる 読者になる 読者になる

MogLog

メモというか日記というか備忘録というか

【Ruby】requireメソッドの使い方メモ

環境:ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin11.4.2]

sinatraとかnokogiriのような外部ライブラリを読み込みたい時と、同じプロジェクト内にある自身が作ったファイル等を読み込みたい時の2パターンがあって、その時にrequireをどう使い分ければいいか調べたのでメモ。

requireメソッドの挙動

渡す引数の形式によって、読み込み先が変わる。
ちなみに、拡張子は省略可能。

ファイル名だけを引数に渡すと組み込み変数$LOAD_PATHからファイルを探す

# $LOAD_PATHからsinatra.rbを探して読み込む
require 'sinatra' 

相対パスを引数に渡すと、rubyが実行されているディレクトリを起点としてファイルを探す

# rubyが実行されているディレクトリと同じ階層にあるlibrary.rbを読み込む
require './library' 

pryで実際にやってみる

以下の構成になっているディレクトリ上で行う。

$ tree
.
└── app.rb

0 directories, 1 files

結果

# sinatraを読み込む
[1] pry(main)> require 'sinatra'
=> true

# app.rbを読み込む(ファイル名だけ指定)
[1] pry(main)> require 'app'
=> false

# app.rbを読み込む(相対パスを指定)
[1] pry(main)> require './app'
=> true

その他の方法

組み込み変数$LOAD_PATHはパスの配列なので、この配列に読み込みたいパスを追加すれば、相対パス指定をしなくても任意のファイルを読み込めるようになる。

# /path/to/my/libraries/以下にあるファイルを$LOAD_PATHに追加
$LOAD_PATH << '/path/to/my/libraries'
参考