module function Kernel.#require_relative

require_relative(relative_feature) -> bool[permalink][rdoc][edit]

現在のファイルからの相対パスで require します。

require File.expand_path(relative_feature, File.dirname(__FILE__))

とほぼ同じです。

Kernel.#eval などで文字列を評価した場合に、そこから require_relative を呼出すと必ず失敗します。

[PARAM] relative_feature:
ファイル名の文字列です。
[EXCEPTION] LoadError:
ロードに失敗した場合に発生します。

[SEE_ALSO] Kernel.#require

require と load のスコープ

ローカル変数はファイル間では共有されません。ですので、ロードしたライブラリのローカル変数をロード元のスクリプトから直接取得することはできません。このスコープの扱い方はKernel.#loadでも同様です。

---------- some.rb -----------
$a = 1
@a = 1
A = 1
a = 1
---------- end some.rb -------

require 'some'
p $a #=> 1
p @a #=> 1
p A #=> 1
p a # undefined local variable or method `a' for #<Object:0x294f9ec @a=1> (NameError)