【问题标题】:ruby require_relative gives LoadError: cannot infer basepath inside IRBruby require_relative 给出 LoadError: cannot infer basepath inside IRB
【发布时间】:2013-05-01 13:28:40
【问题描述】:

我现在在

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

【问题讨论】:

标签: ruby require


【解决方案1】:

这是 ruby​​ 中的一个已知错误:

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

gem install pry-require_relative

【讨论】:

    【解决方案2】:

    require_relative 需要一个与调用require_relative 所在文件相关的文件。您对require_relative 的调用不在任何文件中,它在交互式解释器中,因此它不起作用。

    您可以通过显式传递完整路径来使用require 的长格式:

    require './units/login_as_admin_spec.rb'
    

    或者像往常一样将当前目录添加到$LOAD_PATHrequire

    $LOAD_PATH << '.'
    require 'units/login_as_admin_spec'
    

    【讨论】:

      【解决方案3】:

      这行得通:

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

      【讨论】:

      • 你使用的是哪个 Ruby 版本?
      • 如果你只运行File.expand_path("../login_as_admin_spec.rb", __FILE__),你应该会看到__FILE__被忽略,你会得到File.expand_path("./login_as_admin_spec.rb")的完整路径
      【解决方案4】:

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

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

      【讨论】:

      • 没用,找不到文件,尝试了./unitsunits../units,但都没有成功。
      • @MichaelDurrant 错误是什么,您输入的代码行是什么?它确实有效,我已经做过很多次了。
      • 撬开,见上面@gawin的评论。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-19
      相关资源
      最近更新 更多