Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Kernelモジュール > require
require(feature) -> bool
[permalink][rdoc]Ruby ライブラリ feature をロードします。拡張子補完を行い、 同じファイルの複数回ロードはしません。
feature が絶対パスのときは feature からロードします。 feature が相対パスのときは組み込み変数 $: に示されるパスを順番に探し、最初に見付かったファイルを ロードします。このとき、$: の要素文字列の先頭文字が `~' (チルダ) だと、環境変数 HOME の値に展開されます。 また `~USER' はそのユーザのホームディレクトリに展開されます。
Ruby ライブラリとは Ruby スクリプト (*.rb) か拡張ライブラリ (*.so,*.o,*.dll など) であり、feature の拡張子が省略された場合はその 両方から探します( *.rb が優先されます)。 省略されなかった場合は指定された種別のみを探します。 また、feature の拡張子にはアーキテクチャで実際に使われる拡張子に 関らず拡張ライブラリの拡張子として常に .so を用いることができます(内部で適切に変換されます)。
ライブラリのロードに成功した時には true を返し、ロードした feature の名前を(拡 張子も含めて) 変数 $" に追加します。ただし、feature の名前が既に $" に含まれていた場合はロードせずに false を返します。
[SEE_ALSO] Kernel.#load,Kernel.#autoload
ローカル変数はファイル間では共有されません。ですので、 ロードしたライブラリのローカル変数を ロード元のスクリプトから直接取得することはできません。 このスコープの扱い方は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)