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 中定义的那个。如果你运行 railsrake 而不使用它,你的系统可能会尝试运行不同的版本。 在上面展开,bundle exec rspec spec/&lt;path_to_file&gt;/file_spec.rb。换句话说,使用 `bundle exec' 前缀运行实际测试。 这里的问题不是运行了错误的规范,而是使用了错误的 rspec 版本 它仍然没有解释它为什么起作用。我只有一个版本的rspec&gt;gem list --local rspecrspec-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)

乘客:无法加载此类文件 ruby​​gems/builder

LoadError: 无法加载此类文件 -- test/unit/error

Ruby loaderror 无法加载此类文件