2014-02-23
【Ruby】requireメソッドの使い方メモ
sinatra とか nokogiri のような外部ライブラリを読み込みたい時と、同じプロジェクト内にある自身が作ったファイル等を読み込みたい時の2パターンがあって、その時に require をどう使い分ければいいか調べたのでメモ。
環境:ruby 2.0.0p247 (2013-06-27 revision 41674)[x86_64-darwin11.4.2]
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'
参考
h3pei
関連記事
次の記事 >>新卒で入社してからの1年間を振り返ってみる