在安装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中已经存在此问题的答案,这看起来像是一个类似的问题,但是提供的解决方案无效。我看到了所有警告。
答案 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