无法抑制 Ruby 2.7.0 警告

Rob*_*Rob 8 ruby ruby-on-rails suppress-warnings

我在这里关注了这个问题,特别是添加

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

到我的 .zshrc 文件。

尽管如此,我仍然收到大量警告。例如,:

/Users/XXX/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/sqlite3-1.4.1/lib/sqlite3/database.rb:89: warning: rb_check_safe_obj will be removed in Ruby 3.0
/Users/XXX/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/activemodel-6.0.2.1/lib/active_model/type/integer.rb:13: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
/Users/XXX/.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/activemodel-6.0.2.1/lib/active_model/type/value.rb:8: warning: The called method `initialize' is defined here
Run Code Online (Sandbox Code Playgroud)

我不确定为什么没有通过 RUBYOPT 抑制。

小智 1

我认为你应该尝试这样的测试......

RUBYOPT='-W:no-experimental -W:no-deprecated'  irb
>> Warning[:experimental]
false
>> Warning[:deprecated]
false
Run Code Online (Sandbox Code Playgroud)

如果您没有看到像我上面所说的输出,则有问题。

您没有提到产生这些警告的原始命令行。可能是您的代码中的某些内容或您正在使用的 Gem 正在更改Warning[:deprecated] = true. 这意味着您为自己的选择所做的一切-W都会被忽略。