rails-rspec 错误无法加载此类文件 -- rspec/core/formatters/progress_formatter
Posted
技术标签:
【中文标题】rails-rspec 错误无法加载此类文件 -- rspec/core/formatters/progress_formatter【英文标题】:rails-rspec error cannot load such file -- rspec/core/formatters/progress_formatter 【发布时间】:2018-03-06 20:53:31 【问题描述】:我的 rails-rspec 坏了。我切换到不同的 gemset 来运行 3rd 方测试。当我返回到我的 2.3.0(默认)gemset 时,出现以下错误。
运行 rspec 获取:
/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:274:in `require': cannot load such file -- rspec/core/formatters/progress_formatter (LoadError)
运行 rails 生成 rspec:install 返回:
Could not find generator 'rspec:install'. Maybe you meant 'devise:install' or ...
我已尝试卸载并重新安装,但错误仍然存在。
运行rspec -v
返回:
- rspec-core 3.6.0
- rspec-expectations 3.6.0
- rspec-mocks 3.6.0
- rspec-rails 3.6.1
- rspec-support 3.6.0
似乎 ruby 找不到 rspec-core。我尝试了this post 的解决方法,但没有成功。提前感谢您提供的任何见解。
跑步
导轨 4.2.0,红宝石 2.3.0
【问题讨论】:
【参考方案1】:我试图为 CocoaPods 做出贡献,但在执行 rspec foo_spec.rb
时遇到了同样的错误。结果他们根本没有使用rpsec
。他们似乎有一个特殊的测试运行器:
CocoaPods 使用 bacon 作为测试运行器。要运行所有测试,请在项目的 root 中使用
bundle exec rake spec
。如果您想运行特定测试,请使用bundle exec bacon spec/[folder]/[name]_spec.rb
有关更多信息,请参阅here
【讨论】:
【参考方案2】:我从 CodeMentor 和 Egghead.io 专家 Victor Hazbun 那里了解到这一点:
运行gem list | grep rspec
并注意所有列出多个版本的 gem。
然后为每个版本运行gem uninstall ______
(删除每个版本的所有版本)。
然后运行bundle
。这会将您的版本与 gemfile 中的版本同步。
【讨论】:
【参考方案3】:我在 Rails 应用程序中遇到以下错误,这里的解决方案都不适合我。
gems/rspec-core-3.8.0/lib/rspec/core/formatters.rb:210:in `require': cannot load such file -- rspec/core/formatters/progress_formatter (LoadError)
清空 gemset 并重新安装。
这假设您在应用的根目录中使用 rvm
和 .ruby-gemset
。
$ rvm gemset empty <name-of-gemset>
$ bundle install
【讨论】:
没有其他人回应,但这个对我有用,谢谢。【参考方案4】:运行 bundle clean --force
对我有用,结果发现我的系统中有一些过时的 gem
【讨论】:
也为我工作。这应该被标记为正确答案。 这对我有用,但我不知道它在做什么或为什么会起作用。 OP(和未来的读者)-如果您知道,将不胜感激。克里斯 看起来运行嵌入式 Rubymine 测试模块为我破坏了命令行“rspec ./test.spec”。使用“bundle exec rspec ./test.spec”运行它也可以,但“bundle clean --force”修复了它。 谢谢!【参考方案5】:如果您从 RubyMine 运行规范,您可以在运行配置中指定 RSpec 版本。
【讨论】:
【参考方案6】:运行bundle exec rspec
为我解决了这个问题。
【讨论】:
如果您有多个版本的rspec
(可能不同的应用程序使用不同版本的 Rails),bundle exec
确保您使用 Gemfile 中定义的那个。如果你运行 rails
或 rake
而不使用它,你的系统可能会尝试运行不同的版本。
在上面展开,bundle exec rspec spec/<path_to_file>/file_spec.rb
。换句话说,使用 `bundle exec' 前缀运行实际测试。
这里的问题不是运行了错误的规范,而是使用了错误的 rspec 版本
它仍然没有解释它为什么起作用。我只有一个版本的rspec
。 >gem list --local rspec
:rspec-core (3.8.0)
。与我使用 rspec -v
时的版本相同。那么为什么bundle exec
会有所作为呢?
如果您不想每次都输入bundle exec rspec
,请执行以下操作:运行gem list | grep rspec
并注意列出多个版本的所有gem。然后为每个版本运行gem uninstall ______
(删除每个版本的所有版本)。然后运行bundle
。这会将您的版本与 gemfile 中的版本同步。【参考方案7】:
我觉得你应该试试
bundle exec rspec:install
【讨论】:
这完全是错误的。不应标记为正确答案。 正如上述评论者指出的那样,此解决方案失败并出现命令未找到错误。语法正确的命令是bundle exec rails g rspec:install
,但这仍然没有为我解决这个问题。以上是关于rails-rspec 错误无法加载此类文件 -- rspec/core/formatters/progress_formatter的主要内容,如果未能解决你的问题,请参考以下文章
Sinatra 应用程序中的“Rake 无法加载此类文件”错误
kernel_require.rb:55:in `require': 无法加载此类文件错误
错误无法加载此类文件 -- user_agent/browsers/playstation (LoadError)
乘客:无法加载此类文件 rubygems/builder