誰かがRuby 2.7.0
でこの問題を解決しましたか?
私はrbenv
を使用してRuby v2.7.0をインストールし、Rails v6.0.2.1
を使用してRailsプロジェクトを作成しました。
現在のところ、
Rails s
Rails s -u puma
Rails s -u webrick
サーバーは稼働しており、サイトは提供されていますが、Console
ログに2つの警告メッセージが表示されます。
local:~/rcode/rb27$ Rails s
=> Booting Puma
=> Rails 6.0.2.1 application starting in development
=> Run `Rails server --help` for more startup options
.rbenv/versions/2.7.0/lib/Ruby/gems/2.7.0/gems/actionpack-6.0.2.1/lib/action_dispatch/middleware/stack.rb:37: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
.rbenv/versions/2.7.0/lib/Ruby/gems/2.7.0/gems/actionpack-6.0.2.1/lib/action_dispatch/middleware/static.rb:110: warning: The called method `initialize' is defined here
Puma starting in single mode...
* Version 4.3.1 (Ruby 2.7.0-p0), codename: Mysterious Traveller
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://127.0.0.1:3000
* Listening on tcp://[::1]:3000
したがって、警告メッセージは次のとおりです。
**.rbenv/versions/2.7.0/lib/Ruby/gems/2.7.0/gems/actionpack-6.0.2.1/lib/action_dispatch/middleware/stack.rb:37: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call**
**.rbenv/versions/2.7.0/lib/Ruby/gems/2.7.0/gems/actionpack-6.0.2.1/lib/action_dispatch/middleware/static.rb:110: warning: The called method `initialize' is defined here**
次のような警告を抑制するには:
warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
とりあえず、RUBYOPT
環境変数をRailsコマンドにプレフィックス/パスするだけです:
RUBYOPT='-W:no-deprecated -W:no-experimental' Rails server
またはRUBYOPT='-W:no-deprecated -W:no-experimental' Rails db:migrate
これは、以前のバージョンのRubyでは機能しない可能性があります。
Rubyの以前のバージョンとの下位互換性のために、代わりにRUBYOPT='-W0'
を前に付けます。
例:
RUBYOPT='-W0' bundle exec rspec
コマンドを実行するたびにこれにプレフィックスを付けたくない場合は、.zshrc
または.bashrc
(使用しているものは何でも)の最後の行にこれを追加します。
export RUBYOPT='-W:no-deprecated -W:no-experimental'
またはexport RUBYOPT='-W0'
こちらのメモの最後のポイントもご覧ください。
https://rubyreferences.github.io/rubychanges/2.7.html#warning-and-
Rubyチームが次のRubyバージョンでこの警告をすべて削除するには、しばらく時間がかかります。とりあえず、ターミナルでのコマンド
`RUBYOPT='-W:no-deprecated' Rails s`
私の基本的なプレーンな新しいRails 6.0.2.1 && Ruby 2.7.0プロジェクトでは、上記の2つの警告行を質問から削除します。
また、コマンドで
RUBYOPT='-W:no-experimental' Rails s
実験的な機能に関する警告を非表示にします。
次のような1つのコマンドでこれら2つを組み合わせることができます。
RUBYOPT='-W:no-deprecated -W:no-experimental' Rails s
しかし、Rails 5.2とRuby 2.6.4を後でRailsにアップグレードして、 6.0.1と私は異なるRails Active *モジュールとRuby gems。
おそらく、コードやgemを新しい最新のものにアップグレードするために、しばらく時間が必要になるでしょう。
単なる警告であり、何にも影響しません。単にそれらを抑制することができます。ソリューション2が自分にぴったりであることがわかりました。
オプション1. RailsサーバーをRUBYOPT='-W:no-deprecated' Rails s
で起動します
オプション2. bash/zshプロファイルにexport RUBYOPT='-W:no-deprecated
を設定します
オプション3. RubyコードでWarning[:deprecated] = false
を設定します