基本的なことかもしれないけれども、基本すらできないので、Rubyのrequireについてしらべたことをまとめ。
requireとは
requireとは、ロードパスからファイルを探してきて自分のコードに取り込む仕組み。
requireの他にも、loadというものもある。両者の違いは別記事で以前まとめた。
例
たとえば、同一ディレクトリにあるhogehogeを自分のコードに取り込みたいときは、以下のようにつかう。
# requireを使う場合
requier './hogehoge'
# require_relativeを使う場合
require_relative 'hogehoge'
requireは、LOAD_PATHが通ったところをロードするため、カレントディレクトリのファイルをロードするためには、ドットをうつ。
require_relative相対パスでパスを指定できる。
余談で、rspecは実行時にlibとspecのディレクトリがロードパスに追加される。
相対パスがかっこ悪いのでなんとかする
個人的には、相対パスがかっこ悪いので、何とかしたい。
コード中でLOAD_PATHにカレントディレクトリを追加
以下の処理を書くと、コード実行時にLOAD_PATHに自分のディレクトリを追加できる。
# 簡易版
$:.unshift File.dirname(__FILE__)
# 自分でパスを追加したい場合
$:.unshift(File.dirname(File.expand_path(__FILE__)) + '起動したプログラムからの相対パス')
ruby起動時にLOAD_PATHにディレクトリを追加
ruby -I (ディレクトリ)でもパスを追加できる。起動用のシェルやbatを作成するといいかも。
#!/bin/bash
current_dir=`dirname $0`
cd ${current_dir}
ruby -I ./lib $@