Rubyリファレンス: Home

autoload (Module)

Edit   History

標準クラス・モジュール > Module > autoload

mod.autoload(name, file_name)

autoloadメソッドを使うと、ネストされたクラスやモジュールが必要になったときにRubyファイルを自動的に読み込む(requireする)ことができます。引数nameには定数名(クラス・モジュール名)をシンボルか文字列で指定し、引数file_nameにはファイル名を指定します。戻り値はnilです。

ファイル名の指定のしかたはrequireと同じで、拡張子を省略できます。ファイルはrequireと同じくロードパス$:から検索されます。

次の例では、クラスOuter::Innerが必要になると自動的にファイルlib/inner.rbを読み込みます。

class Outer
end
Outer.autoload :Inner, 'lib/inner'
 
puts "Not loaded yet."
puts Outer::Inner.new
Not loaded yet.
lib/inner Loaded!
#<Outer::Inner:0x14202c0>

ファイルlib/inner.rbの内容は次の通りです。トップレベルのクラス・モジュールを自動ロードしたいときは、Kernelautoloadを使ってください。

class Outer
  class Inner
  end
end
puts "lib/inner Loaded!"

関連項目