サーチ…


ファイルを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


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow