把头发拉出来。我使用rspec的rake任务通过rake运行一些rspec规范。它一直工作正常,直到我开始收到此错误消息:
rake aborted!
LoadError: cannot load such file -- rspec/core/rake_task
以下是gem list | grep rspec
rspec (3.1.0)
rspec-core (3.1.7)
rspec-expectations (3.1.2)
rspec-mocks (3.1.3)
rspec-support (3.1.2)
这是我用来在我的Rakefile中包含rake任务的行
require 'rspec/core/rake_task'
我卸载了所有rspec宝石并重新安装。同样的错误。正如我所提到的,我已经运行了几个月的测试而没有问题。没有对环境进行任何更改,它在VM中运行,因此我可以确保它不是同事。我错过了什么?
修改
我仔细检查了我的Gemfile.lock
文件,所有的gem版本都与上游repo中的版本相匹配。
答案 0 :(得分:1)
首先,我建议通过rspec
命令运行您的规范。它比通过rake
运行规范更灵活,并且开销更少。通过rake
运行规范仍然可以作为构建管道的一部分(rake
擅长的东西)。
您没有提供足够的信息来明确回答您的问题,但我可以提供一些建议:
rake
投放bundle exec rake
? Bundler用于在安装宝石后在运行时管理加载路径,并应确保已安装的rspec-core/lib
位于加载路径上。puts $LOAD_PATH.join("\n")
添加到Rakefile
的顶部,以查看加载路径是什么。列表中的rspec-core
位于何处? (我怀疑它不是)。如果不是,则除非require 'rspec/core/rake_task'
作为系统gem安装,否则rspec-core
将不起作用。使用gem which rspec-core
查看是否以这种方式安装。