Techioz Blog

Ruby のバージョン管理の競合を理解する: Net::ProtocRetryError および Net::BufferedIO::BUFSIZE 警告を解明する

概要

仕事中に mailcatcher のような gem を起動しようとしたり、サーバーを起動したり、コマンド Rails c を実行しようとしたりするたびに、このエラー メッセージが表示されますが、なぜそれが Ruby のエラー バージョンのように見えるのかわかりません。

私はこの Ruby バージョンを使用しています: Ruby 2.7.0p0 (2019-12-25 リビジョン 647ee6f091) [x86_64-linux]

Rails バージョン: Rails 6.0.4.7。

そして、Michal Papis、Piotr Kuczynski、Wayne E. Seguin [https://rvm.io] による RVM 1.29.12 (最新) を使用して Ruby をインストールしました。

net-protocol gemを更新し、rubyのバージョンを別のバージョンの2.7.0に変更しようとしましたが、うまくいきませんでした。

なぜこれが起こっているのかを知り、この種のメッセージが表示されないよう解決したいと考えています。

解決策

Net::* クラスの一部 (おそらくすべてかどうかはわかりませんが) は、Ruby 3.0 あたりで stdlib から gem に移動されました (gem 化されました)。 それ以降、Ruby バージョン 3.0 より前の場合、Net::* クラスに依存する gem (ファラデーなど) が同じクラスを 2 回ロードする可能性があります。 1 回は標準ライブラリから、もう 1 回は gem からです。

解決策 1 Ruby 3.X にアップグレードします (この解決策は適用できません)。 解決策 2 明示的に net-http を gemfile に追加すると、メッセージが表示されなくなります。