require './test_req.rb'
:Rubyで
require './test_req'
この
require_relative 'test_req.rb'
?私はこれらの3つの違いを研究しており、機能性を見出すことはできません。
require './test_req.rb'
:Rubyで
require './test_req'
この
require_relative 'test_req.rb'
?私はこれらの3つの違いを研究しており、機能性を見出すことはできません。
です:
これと同じrequire './test_req.rb'
:
require './test_req'
最初のものは、現在の作業ディレクトリにtest_req.rb
という名前のファイルを探しますいいえ。 2つ目は、現在の作業ディレクトリに実装定義ファイルのセットを探します。 YARVはtest_req.rb
,test_req.rbw
,test_req.so
,test_req.dll
およびtest_req.dylib
を検索します。 JRubyは、test_req.rb
、test_req.rbw
、test_req.so
、test_req.dll
、test_req.dylib
、test_req.class
、およびtest_req.jar
を検索します。 Rubiniusは、test_req.rb
,test_req.rbw
、test_req.so
、test_req.dll
、test_req.dylib
、およびtest_req.rba
を検索します。 (注:このリストはメモリからのものですので、二重チェックはしません)
これらの両方がでない場合は、を使用する必要があります。現在の作業ディレクトリは、スクリプトの制御外にあります。最良の場合、これは、脆弱なスクリプトにつながり、スクリプトが実行されたときに現在の作業ディレクトリが何であっても、LoadError
で失敗することがあります。ただし、スクリプトの制御外にある現在の作業ディレクトリだけでなく、呼び出し元の制御下にあります。これは、呼び出し元がスクリプト内に任意のコードを挿入できることを意味します。test_req.rb
を制御下にあるディレクトリに置き、スクリプトを呼び出す前にそのディレクトリを現在の作業ディレクトリとして設定します。
だからこそ、.
はRuby 1.9の$LOAD_PATH
から削除されたので、絶対に使用しないでください。
この
require_relative 'test_req.rb'
これは、他の2つのいずれかと同等ではありません。これにより、現在実行中のファイルではなく現在の作業ディレクトリと同じディレクトリにあるtest_req.rb
という名前のファイルが検索されます。
最初の2つのステートメントの違いはありません。彼らは同じように見える –
@リチャードハミルトン申し訳ありませんが、私は2番目の例から拡張子を削除しました。 – anemaria20
あなたはいくつかの簡単なテストでこれにあなた自身で答えることはできませんか? –