Rubyでのrequire、load、includeの違い


Rubyでは、loadとrequireを使用して別のファイルを含めることができます.loadが実行されるたびに、load後のファイルがロードされ、実行されます.
 
4.times do |i|
		File.open("temp.rb","w") do |f|
			f.puts "def test"
			f.puts "#{i}"
			f.puts "end"
		end
		load "temp.rb"
		puts test
end 

実行結果:
    0
    1
    2
    3 
上の小さなプログラムでload「temp.rb」は4回実行され、毎回temp.rbファイルはすべて異なるのでtestメソッドの実行後の結果も異なります.
requireはloadとは異なり、ファイルを1回だけロードします.つまり、requireが最初に実行されたときにロードされ、その後、requireが同じファイルに遭遇したときに自動的に無視され、ロードされたファイルは$"に保存されます.また、requireは、バイナリ形式のライブラリをロードするためにも使用できます.Requireは絶対パスまたは相対パスを使用できます.相対パスを使用すると、$:変数に含まれるディレクトリで検索されます.Requireとloadのもう一つの違いは、ファイルがRubyコードである場合、requireは接尾辞名を付けなくてもよいことです.Requireは、現在ロードされているすべてのファイルを$"変数に保存します.
 
summary:
 
 
require,load,includeはKernelモジュールのメソッドであり、それらの違いは以下の通りです.
lrequire、loadはファイルを含むために使用され、includeはモジュールを含むために使用されます.
lrequireは1回ロードされ、loadは複数回ロードできます.
lrequire Rubyコードファイルをロードする場合は接尾辞名を付けず、loadコードファイルをロードする場合は接尾辞名を付けなければならない.
lrequireは一般的にライブラリファイルのロードに使用され、loadはプロファイルのロードに使用されます.