2020-01-13 [長年日記]
_ 学習用にRuby2.7のdeprecated warningを抑制したい
Ruby2.7+Rails6.0の組み合わせだと、現状はRuby3へ向けた多くのwarningが表示される。学習者にとってはログが読めなくなってるので、学習用にログをなんとかする方法。
まず、RUBYOPT環境変数を使ってRailsへRuby実行時のコマンドラインオプションを渡す方法
$ RUBYOPT='-W:no-deprecated' rails s
$ RUBYOPT='-W:no-experimental' rails s
$ RUBYOPT='-W:no-deprecated -W:no-experimental' rails s
毎回打たないといけない。shellをつかえば export RUBYOPT="foo" すればいいのだが、他のRubyプログラムにも影響が出るので、影響範囲広い。
Railsの設定ファイルでこれを書けたらいい。Rubyが起動したあとは Warning[:deprecated] = false
でwaringを出さなくできる。たとえばconfig/boot.rbの1行目で Warning[:deprecated] = false
と書くと、起動時初回のwarningは出るが、それ以降は出なくなる。
- 参考: https://www.ruby-lang.org/ja/news/2019/12/25/ruby-2-7-0-released/
- 「非推奨に関する警告を止めたい場合は、コマンドライン引数に-W:no-deprecatedを指定するか、コードの中でWarning[:deprecated] = falseとしてください。」