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

Car*_*arl 1 ruby rspec ruby-on-rails 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
Run Code Online (Sandbox Code Playgroud)

由于这些警告是从 gem 中弹出的,它们确实没有帮助,并且使 RSpec 输出变得一团糟。

我曾尝试将此行添加到 spec_helper.rb

config.warnings = false
Run Code Online (Sandbox Code Playgroud)

这行到 config/environments/test.rb

config.active_support.deprecation = :log
Run Code Online (Sandbox Code Playgroud)

但是,仍然有数百个警告弹出。我能做些什么来摆脱它们吗?

运行 Ruby on Rails 6.0.2.1 和 Ruby 2.7.0

注意 有人建议在运行规范时抑制 Ruby 警告中已经存在这个问题的答案这看起来像一个类似的问题,但提供的解决方案没有效果。我看到了所有的警告。

eda*_*edl 6

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

Ruby 2.7 试图警告您有关 ruby​​ 3.0 中将出现的向后不兼容问题。请参阅发行说明。弃用的主要来源是位置参数和关键字参数分离部分。

Rails 和其他库以及 gem 还没有为这个变化做好准备,所以 ruby​​ 向你展示了大量的警告。

我会等待升级,直到 gems 将来解决这些警告,但您也可以根据以下文章抑制这些警告https://prathamesh.tech/2019/12/26/managing-warnings-emitted-by-ruby-2 -7/

RUBYOPT='-W:no-deprecated -W:no-experimental' rails c
Run Code Online (Sandbox Code Playgroud)