autoload # Ruby

これは何か

怠惰なモジュール(クラス)参照メソッド

autoload の前に require

require の挙動

  • require した時点で即読込み
#!/usr/bin/env ruby
require 'pathname' #=> true
require 'lib/foo'  #=> true

autoload

autoload の挙動

  • 定数を参照するまで読み込まない(怠惰)

lib/foo.rb

  1 #!/usr/bin/env ruby
  2           
  3 class Foo
  4   p 'im foo!'
  5 end

main.rb

  1 #!/usr/bin/env ruby
  2           
  3 autoload :Foo, 'lib/foo' #=> nil ### lib/foo.rb は読み込んでいない
  4   
  5 Foo #=> 'im foo!'

will be dead らしい

細かいことはドキュメント参照