我现在在
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中的已知错误:
如果你使用Pry而不是IRB,可以通过安装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'
。