gpt4 book ai didi

ruby - 运行单个 RSpec 规范失败,显示 "` require' : cannot load such file"

转载 作者:数据小太阳 更新时间:2023-10-29 09:00:31 24 4
gpt4 key购买 nike

我正尝试按照指示获取 test-first-ruby-master,但出现多个错误。这是 test-first-ruby-master 中文件/目录的结构:

Gemfile     Gemfile.lock    README.md   lib     spec

lib 包含 ruby​​ 文件,spec 包含 spec 文件。我试图在我的终端上执行 00_hello_spec.rb 文件,但它不起作用。

我尝试过的

  1. 需要“lib/00_hello.rb”
  2. require_relative "lib/00_hello.rb"

我遇到的错误

supritkumars-MacBook-Pro:test-first-ruby-master supritkumarshah$ rspec spec/00_hello_spec.rb 
/Users/supritkumarshah/Desktop/test-first-ruby-master/spec/00_hello_spec.rb:103:in `require': cannot load such file -- lib/00_hello.rb (LoadError)
from /Users/supritkumarshah/Desktop/test-first-ruby-master/spec/00_hello_spec.rb:103:in `<top (required)>'
from /Users/supritkumarshah/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.2.3/lib/rspec/core/configuration.rb:1226:in `load'
from /Users/supritkumarshah/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.2.3/lib/rspec/core/configuration.rb:1226:in `block in load_spec_files'
from /Users/supritkumarshah/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.2.3/lib/rspec/core/configuration.rb:1224:in `each'
from /Users/supritkumarshah/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.2.3/lib/rspec/core/configuration.rb:1224:in `load_spec_files'
from /Users/supritkumarshah/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.2.3/lib/rspec/core/runner.rb:97:in `setup'
from /Users/supritkumarshah/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.2.3/lib/rspec/core/runner.rb:85:in `run'
from /Users/supritkumarshah/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.2.3/lib/rspec/core/runner.rb:70:in `run'
from /Users/supritkumarshah/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.2.3/lib/rspec/core/runner.rb:38:in `invoke'
from /Users/supritkumarshah/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.2.3/exe/rspec:4:in `<top (required)>'
from /Users/supritkumarshah/.rvm/gems/ruby-2.3.0/bin/rspec:23:in `load'
from /Users/supritkumarshah/.rvm/gems/ruby-2.3.0/bin/rspec:23:in `<main>'
from /Users/supritkumarshah/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `eval'
from /Users/supritkumarshah/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `<main>'

谢谢

最佳答案

require 失败是因为您需要一个相对路径,'lib/00_hello.rb',但是它相对于的目录(项目的根目录) ) 不在 Ruby 为 require 寻找文件的目录列表中(加载路径,$LOAD_PATH)。

有很多方法可以解决这个问题。这里有一些:

  • 告诉 rspec 将项目的根添加到加载路径。因为那是你的当前目录,你可以使用 .:

    rspec -I. spec/00_hello_spec.rb
  • 将规范更改为 require_relative '../lib/00_hello'。这与当前目录或加载路径无关——在命令行程序中是个好主意,但对于学习项目而言并不那么重要。

  • 正如 B 七的回答,将您的规范更改为 require './lib/00_hello'。这需要您在项目的根目录中运行 rspec。

  • 您甚至可以完全删除 require!运行 rspec 时,如果当前目录有名为 lib 和/或 spec 的子目录,rspec 会将它们添加到加载路径中。这还需要您在项目的根目录中运行 rspec。如果您在真正运行程序时(不是在 rspec 下)需要 require,则此解决方案将不起作用。

请注意,在您需要的文件名中包含.rb 不会导致问题,但这不是必需的。

关于ruby - 运行单个 RSpec 规范失败,显示 "` require' : cannot load such file",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36794021/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com