私が持っている別のファイル内に作成したレーキファイルを要求しようとしています。これらの2つのファイルは、2つの異なるディレクトリ内にあります。最初のファイルの先頭にrequireがあり、requireの後の引用符内に2番目のファイルの名前があります。そのようなファイルを読み込めないと言っています。別のディレクトリで見つからないためですか? 2番目のファイルへのフルパスを使用しようとしましたが、まだファイルをロードできません。 2番目のファイルを最初のファイルにロードする方法を知っている人はいますか?
前もって感謝します
require
は、「ロードパス」と呼ばれる場所のセットのみでファイルを検索します。スクリプトまたはirbセッションでグローバル変数$LOAD_PATH
を使用して、ロードパスを表示できます。ロードパスにない場合、見つかりません。
Ruby 1.9では、現在のファイルの場所を出発点として検索するrequire_relative
が導入されました。
# Will search $LOAD_PATH for file.
require 'test/unit'
# Notice the '/' which tells it to look in the
# 'test' folder for a file named 'unit.rb'
# Will look in current folder of file
require_relative 'my_folder/my_file'
# Will search in 'my_folder' for the file 'my_file.rb'
require_relative
はirbでは機能しないことに注意してください。
また、require
を本当に使用したい場合は、$LOAD_PATH
変数に場所を追加してスクリプトを開始できることに注意してください。
$LOAD_PATH << File.join('users', 'yourusername', 'your_folder')
# or
$LOAD_PATH << File.dirname(__FILE__)
# The second one enables you to move the file around on your
# system and still operate correctly
require 'my_file'
次に、Ruby-Docの追加ドキュメントを示します。
ドキュメントから:require relativeを使用することを提案します。 Docs
require_relative
は、require_relative
ステートメントを含むファイルに関連するファイルをロードできるようにすることで、組み込みメソッドに必要な機能を補完します。
require
を使用してファイルをロードする場合、通常、システムに適切にインストールされ、アクセス可能にされた機能にアクセスしています。 requireは、プロジェクトのコード内でファイルをロードするための適切なソリューションを提供しません。これは、開発段階でテストデータにアクセスしたり、プロジェクト内で「ロック」されているファイルにアクセスしたり、外部での使用を目的としない場合にも役立ちます。
たとえば、「test」ディレクトリに単体テストクラスがあり、テストの「test/data」ディレクトリの下にそれらのデータがある場合、テストケースで次のような行を使用できます。
require_relative "data/customer_data_1"
それも可能です:
require './something.rb'
含める現在のディレクトリから。
たとえば、次のファイルがあります。
chess.rbおよびspec/test.rb
そして、spec/test.rbにあるファイルを要求します。つかいます:
require_relative '../test.rb'
2つのドットで。 1つのドット「./」を使用すると、「そのようなファイルをロードできません」というエラーが発生します