Rubyでのrequire、load、includeの違い
Rubyでは、loadとrequireを使用して別のファイルを含めることができます.loadが実行されるたびに、load後のファイルがロードされ、実行されます.
実行結果:
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はプロファイルのロードに使用されます.
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はプロファイルのロードに使用されます.