Rubyのrequireとrequire_relative
一昨日の同じディレクトリにある他の.rbファイルの読み込み方について、りょーさんからツッコミいただきました。
require_relative を使った方がよい場面があるんではなかったでしたっけ
https://twitter.com/beakmark/status/555112756727144448
requireでなくrequire_relativeを使う場合があるとのこと。
requireはカレントディレクトリからの相対パス、require_relativeは当該ファイルからの相対パスを記述するそうです。
自分は後者のつもりで前者を使おうとしていたので、誤りでした。
で、じゃあrequire_relativeをこれからは使うぞと思っていたところ、「require_relativeなんて使ってるの見たことねーぞ」と某所からツッコミを受けました。githubの言語別Trendに上がっているリポジトリを覗いて回ったところ、たしかに誰も使ってないですね^q^
ではどうやっているんだと思ったら。
ある特定のディレクトリ以下のライブラリを読み込みたい場合は、$LOAD_PATHに追加したほうが楽そうですね。
http://qiita.com/nekogeruge_987/items/2d18f388219597c75e05#comment-b8a83de723d5962a62a2
$LOAD_PATH << '/lib' require 'filename'
あーRakefileの先頭とかでよく見るこれか。
$:.unshift( "lib" )
libディレクトリにコードをまとめておいて、まとめてLOAD_PATHに追加する。
この記述のおかげで、個別のファイルの中では相対パスで書かずに済むんですね。なるほど。