こんにちは、わくほこ(@wakuhoko)です。
今回はターミナルの警告を消すためにしたことを備忘録として残しておきます!
この記事では、
- already initialized constant Net::ProtocRetryErrorのエラを解消したい
という方におすすめです。
結論、「net-http」というgemを入れて解決しました。
ターミナルで警告が出る
ターミナルでコマンドを実行するたびに警告が表示されていました。
以下が具体的なメッセージの内容です。
.rbenv/versions/2.6.5/lib/ruby/2.6.0/net/protocol.rb:66: warning: already initialized constant Net::ProtocRetryError
/Users/hoge/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/net-protocol-0.2.1/lib/net/protocol.rb:68: warning: previous definition of ProtocRetryError was here
/Users/hoge/.rbenv/versions/2.6.5/lib/ruby/2.6.0/net/protocol.rb:206: warning: already initialized constant Net::BufferedIO::BUFSIZE
/Users/hoge/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/net-protocol-0.2.1/lib/net/protocol.rb:214: warning: previous definition of BUFSIZE was here
/Users/hoge/.rbenv/versions/2.6.5/lib/ruby/2.6.0/net/protocol.rb:503: warning: already initialized constant Net::NetPrivate::Socket
/Users/hoge/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/net-protocol-0.2.1/lib/net/protocol.rb:541: warning: previous definition of Socket was here
rails sやrails db:migrateなどrailsのコマンドを実行するとこちらの警告が表示されます。
普通に処理は実行できるけど、毎回これが表示されるのは正直、面倒です…
この警告のせいか、結果が表示されるまで時間がかかります…
どうにかならないかと検索してみたら、Rubyのバージョン特有のエラーだとか。
発生していたエラーが2.7.1以前特有のエラーだったようで、バージョンを2.7系最新に変更するだけで解決することが出来ました。
https://qiita.com/otohusan/items/3ec029b57e8950fcdc54
たしかに、わたしのRubyのバージョンは2.6.5です。
上記の記事ではRubyのバージョンを変更して対処したようです。
うーん、でもアプリの開発中にバージョン変更したくないなあ…
そこでこちらのStackOverflowに書いてあったgem「net-http」を入れてみることにしました。
gemならもしエラーが起きてもアンインストールすれば良いだけだし、最悪犠牲になるのはアプリ1個だけ!
ということで早速Gemfileに以下を書いてbundle installを実行しました。
gem "net-http"
gemを導入した結果は?
ためしにターミナルでrails sを実行すると…
わーい!
うっとうしかった警告が消えてスッキリしています🙌
終わりに
今回は調べて出てきた対策を実行したら、たまたまうまくいきました。
けど、本来はエラーの意味を理解したうえで対処しないといけませんよね。
今後はこういうエラーに対する知識もしっかりつけていきたいと思います!
まずはRailsやRubyの理解を深めてからあらためて学習したいです!
ちなみにプログラミングはデイトラ
ではでは〜
にほんブログ村