安装 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
和这一行配置/环境/测试.rb
config.active_support.deprecation = :log
但是,警告仍然有数百条出现。我能做些什么来摆脱它们吗?
运行 Ruby on Rails 6.0.2.1 和 Ruby 2.7.0
注意有人建议,运行规范时,"抑制 Ruby"警告中已经存在此问题的答案 这看起来像一个类似的问题,但提供的解决方案不起作用。我看到了所有的警告。
这些警告/弃用直接来自 ruby 2.7,您不能通过轨道或 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