私は現在
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
require_relative
には、require_relative
への呼び出しが含まれているファイルに関連するファイルが必要です。require_relative
への呼び出しはどのファイルにも含まれていません。インタラクティブインタプリタにあるため、機能しません。 。
フルパスを明示的に渡すことにより、長い形式のrequire
を使用できます。
require './units/login_as_admin_spec.rb'
または、現在のディレクトリを$LOAD_PATH
に追加し、通常どおりrequire
だけを追加します。
$LOAD_PATH << '.'
require 'units/login_as_admin_spec'
これはRubyの既知のバグです。
IRBの代わりにPryを使用している場合、これは pry-require_relative gem をインストールすることで修正できます。
gem install pry-require_relative
これはうまくいきました:
require File.expand_path("../login_as_admin_spec.rb", __FILE__)
require_relative
は、現在のソースファイルのコンテキストで機能します。これは、現在の作業ディレクトリとは異なります。 irb
またはpry
が「この現在のソースファイル」の概念を理解しているとは思いません。あなたは実際にはファイルにいないので。
これらの REPLs では、相対パス参照require './units/login_as_admin_spec.rb'
を使用するだけです。