20

私は現在

Dropbox/96_2013/work/ror/dmc/dmStaffing/QA/selenium_server_wyatt/spec/2day/units/

irb に入ってファイルを要求することはできますが、それは本当に長い要求です...

require '/home/durrantm/Dropbox/96_2013/work/ror/dmc/dmStaffing/QA/selenium_server_wyatt/spec/2day/units/login_as_admin_spec.rb'
=> true

次のように、require_relative を使用したい

$ cd /home/durrantm/Dropbox/96_2013/work/ror/dmc/dmStaffing/QA/selenium_server_wyatt/spec/2day/
$ pwd
/home/durrantm/Dropbox/96_2013/work/ror/dmc/dmStaffing/QA/selenium_server_wyatt/spec/2day
$ irb
irb(main):001:0> require_relative 'units/login_as_admin_spec.rb' 

しかし、私は得る:

LoadError: cannot infer basepath
4

4 に答える 4

31

require_relativeへの呼び出しが含まれているファイルに関連するファイルが必要ですrequire_relative。への呼び出しrequire_relativeはどのファイルにもありません。対話型インタープリターにあるため、機能しません。

require完全なパスを明示的に渡すことで、長い形式を使用できます。

require './units/login_as_admin_spec.rb'

または、通常どおりに現在のディレクトリを追加します$LOAD_PATHrequire

$LOAD_PATH << '.'
require 'units/login_as_admin_spec'
于 2013-05-07T21:04:27.057 に答える
4

これはうまくいきました:

require File.expand_path("../login_as_admin_spec.rb", __FILE__)
于 2013-05-07T15:10:58.923 に答える
2

require_relative現在のソース ファイルのコンテキストで動作します。これは、現在の作業ディレクトリとは異なります。「この現在のソースファイル」の概念を信じていないirbか、理解していません。pryあなたは実際にはファイルにいないからです。

これらのREPLでは、相対パス参照を使用してくださいrequire './units/login_as_admin_spec.rb'

于 2013-05-07T14:40:44.417 に答える