如何在运行Ruby 2.7.0时抑制RSpec中的警告[重复]

问题描述 投票:0回答:1

安装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

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

ruby-on-rails ruby rspec rspec-rails
1个回答
1
投票

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

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

Rails和其他库以及gems尚未为此更改做好准备,因此ruby向您显示大量警告。

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

RUBYOPT='-W:no-deprecated -W:no-experimental' rails c
© www.soinside.com 2019 - 2024. All rights reserved.