require
メソッドを使用すると、システムにインストールされたライブラリや、相対パス指定でライブラリを読み込むことができます。
下記は、システムにインストールされたライブラリを読み込む例です。
この構文では、組み込み変数の $LOAD_PATH
に設定されたディレクトリ以下にインストールされたライブラリをロードできます。
読み込むファイルの拡張子 .rb
は省略することができます
require 'sample'
例えば、下記のような greet
メソッドを提供するライブラリがあるとします。
def greet
puts 'Hello!'
end
同じディレクトリにある別のスクリプトから、この mylib.rb
というライブラリを読み込んで使用するには、以下のように require_relative
メソッドでライブラリ名を指定します。
require_relative 'mylib' # 同じディレクトリ内の mylib.rb を読み込む
greet # 上記のライブラリが提供する関数の呼び出し
$ ruby sample.rb
Hello!
もちろん、上位のディレクトリのファイルや、下位のディレクトリのファイルも読み込むことができます。
require_relative '../mylib'
require_relative 'foo/mylib'
Ruby 1.8 以前には、require_relative
メソッドがなかったため、require
メソッドを使用して、相対パスによるライブラリのロードなどを行っていました。
この際に、ありがちな間違いだったのは、下記のように記述してしまうことです。
require './mylib'
上記のようなパス指定をすると、そのファイルからの相対パスではなく、ruby
コマンドを実行したディレクトリからの相対パスという意味になってしまうため、実行するディレクトリによって動作が変わってしまいます。
これを防ぐためには、下記のように記述しなければいけませんでした。
require File.join(File.dirname(__FILE__), 'mylib')
Ruby 1.9 以降では、require_relative
が使用できるため、このような面倒な記述は必要なくなりました。