ruby require_relative给出了LoadError:无法推断IRB中的basepath

时间:2013-05-07 14:31:14

标签: ruby require

我目前在

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 个答案:

答案 0 :(得分: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'

答案 1 :(得分:6)

这是ruby中的已知错误:

如果您使用Pry而不是IRB,可以通过安装pry-require_relative gem来解决此问题。

gem install pry-require_relative

答案 2 :(得分:4)

这有效:

require File.expand_path("../login_as_admin_spec.rb", __FILE__)

答案 3 :(得分:2)

require_relative在当前源文件的上下文中工作。这与当前工作目录不同。我不相信irbpry了解“此当前源文件”的概念;因为你实际上并不在文件中。

在这些REPLs中,只需使用相对路径引用require './units/login_as_admin_spec.rb'