【问题标题】:How to Suppress Warnings in RSpec while running Ruby 2.7.0 [duplicate]如何在运行 Ruby 2.7.0 时抑制 RSpec 中的警告 [重复]
【发布时间】:2020-01-11 19:33:36
【问题描述】:

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

由于这些警告是从 gem 中弹出的,它们确实没有帮助,并且使 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这看起来像一个类似的问题,但提供的解决方案没有效果。我看到所有警告。

【问题讨论】:

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


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢。这确实有效。有没有办法自动运行它?
  • 您可以在 tour rc 文件中 export RUBYOPT='-W:no-deprecated -W:no-experimental' 永久设置此环境。
猜你喜欢
  • 2020-06-06
  • 1970-01-01
  • 2019-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-08
  • 2017-06-23
  • 1970-01-01
相关资源
最近更新 更多