Ruby Language
ソースファイルのロード
サーチ…
ファイルを1回だけ読み込むように要求する
Kernel#requireメソッドは、ファイルを一度だけロードします( require
をいくつか呼び出すと、そのファイル内のコードが1回だけ評価されます)。パラメータが絶対パスでない場合、ルビ$LOAD_PATH
を検索して必要なファイルを探します。 .rb
、 .so
、 .o
、 .dll
などの拡張子はオプションです。相対パスはプロセスの現在の作業ディレクトリに解決されます。
require 'awesome_print'
Kernel#require_relativeを使用すると、 require_relative
が呼び出されたファイルを基準にしてファイルをロードできます。
# will search in directory myproj relative to current source file.
#
require_relative 'myproj/version'
ソースファイルを自動的に読み込む
メソッドKernel#autoload
、モジュール(Stringまたはシンボルでもよい)が最初にアクセスされるときにロードするファイル名( Kernel::require
を使用して)を登録します。
autoload :MyModule, '/usr/local/lib/modules/my_module.rb'
メソッドKernel#autoload? nameがautoload
として登録されている場合に読み込まれるファイル名を返します。
autoload? :MyModule #=> '/usr/local/lib/modules/my_module.rb'
オプションのファイルの読み込み
ファイルが利用できない場合、 require
ファミリはLoadError
をスローしLoadError
。これは、オプションのモジュールが存在する場合にのみロードする例を示しています。
module TidBits
@@unavailableModules = []
[
{ name: 'CoreExtend', file: 'core_extend/lib/core_extend' } \
, { name: 'Fs' , file: 'fs/lib/fs' } \
, { name: 'Options' , file: 'options/lib/options' } \
, { name: 'Susu' , file: 'susu/lib/susu' } \
].each do |lib|
begin
require_relative lib[ :file ]
rescue LoadError
@@unavailableModules.push lib
end
end
end # module TidBits
ファイルを繰り返し読み込む
Kernel#loadメソッドは、指定されたファイル内のコードを評価します。検索パスはrequire
同様に構築されrequire
。それは、 require
とは違って後続の呼び出しごとにそのコードを再評価します。 load_relative
はありませload_relative
。
load `somefile`
複数のファイルを読み込む
任意のルビー技術を使用して、ロードするファイルのリストを動的に作成することができます。アルファベット順にロードされた、 test
で始まるファイルのグロビングの図。
Dir[ "#{ __dir__ }**/test*.rb" ) ].sort.each do |source|
require_relative source
end