警告: URI.escape は廃止されました

概要

こんにちは、クイックブックから Oauth2 アクセスを取得しようとしていますが、レールサーバーからのコマンドプロンプトでこの警告が表示されますが、何も起こりません。サーバーは同じ警告を読み続けるだけです。

これはエラーを引き起こす行です (gem 内にあります)。

    def escape(value)
      URI::escape(value.to_s, OAuth::RESERVED_CHARACTERS)
    rescue ArgumentError
      URI::escape(value.to_s.force_encoding(Encoding::UTF_8), OAuth::RESERVED_CHARACTERS)
    end

このエラーに関する他の苦情を見て、URI::escape() コマンドを CGI::escape() に置き換えようとしましたが、このエラーが発生しました。

誰かがこのエラーを解決し、機能する代替手段を見つける方法を教えてもらえますか? 私の Ruby バージョン: Ruby 2.7.2p137 私のRailsバージョン: Rails 6.1.4 ありがとう。

解決策

URI.escape の動作する実装だけが必要な場合は、それを自分で再実装できます。

# config/initializers/uri.rb

module URI
  def self.escape(*args)
    DEFAULT_PARSER.escape(*args)
  end
end

これにより、警告が効果的に削除され、エスケープ呼び出しがデフォルトのパーサーに委任されます。これは Ruby 3 でも機能します。

これは警告を消すための単なる簡単なパッチであることに注意してください。長期的には、古くなった gem の代替品を見つける必要があります。