在运行Ruby 2.7.0时如何抑制RSpec中的警告

时间:2020-01-11 19:33:36

标签: ruby-on-rails ruby rspec rspec-rails

在安装Ruby 2.7.0之后,运行规范已成为诸如此类警告的噩梦:

/Users/user/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/capybara-3.30.0/lib/capybara/node/matchers.rb:835: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
/Users/user/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/capybara-3.30.0/lib/capybara/node/matchers.rb:861: warning: The called method `_set_query_session_options' is defined here

由于这些警告从宝石中弹出,因此它们实际上并没有帮助RSpec输出完全混乱。

我尝试将这一行添加到spec_helper.rb

config.warnings = false

这行到config / environments / test.rb

config.active_support.deprecation = :log

但是,警告仍然弹出数百条。我有什么办法可以摆脱它们?

在Ruby on Rails 6.0.2.1和Ruby 2.7.0上运行

注意 建议Suppress Ruby warnings when running specs中已经存在此问题的答案,这看起来像是一个类似的问题,但是提供的解决方案无效。我看到了所有警告。

1 个答案:

答案 0 :(得分:6)

这些警告/弃用直接来自ruby 2.7,您无法通过rails或rspec配置使它们静音。

Ruby 2.7试图警告您将在ruby 3.0中出现的向后不兼容问题。请参见release notes。弃用的主要来源是位置参数和关键字参数的分隔部分。

铁路,其他图书馆和宝石还没有为这一变化做好准备,因此红宝石向您显示大量警告。

我将等待升级,直到宝石将来解决这些警告为止,但是您还可以根据以下文章https://prathamesh.tech/2019/12/26/managing-warnings-emitted-by-ruby-2-7/

取消显示这些警告。
RUBYOPT='-W:no-deprecated -W:no-experimental' rails c