Ruby - トラブルシュート - ruby26 → ruby27
- 1. 概要
- 2. URI.escape is obsolete
- 3. Kernel#open is deprecated
1. 概要
まぁ、ありがちな話です。
「ruby」のバージョンを「2.6」から「2.7」へあげたら、警告が表示されるようになったのです。
2. URI.escape is obsolete
ひとつは、こんな警告
/パス/ソース名.rb:34: warning: URI.escape is obsolete
まぁ、古いんですって。
該当の個所は、こんなに書いてあります。
uri = URI.encode(uri)
下記のサイトが、参考になりました。
「URI.escape obsolete warning on Ruby 2.7+ · Issue #45 · docusign/docusign-ruby-client · GitHub」
すなわち
gem install addressable
でモジュールをインストールして、ソースの上のほうに下記を記述したうえで
require('addressable')
該当の個所を
uri = Addressable::URI.encode(uri)
と書き換えたら、ワーニングは出なくなりました。
3. Kernel#open is deprecated
これは
html = open(uri).read
と書いてある箇所で、警告が表示されます。
/パス/ソース名.rb:41: warning: calling URI.open via Kernel#open is deprecated, call URI.open directly or use URI#open
これは
「Ruby 2.7で発生する「プロを目指す人のためのRuby入門」との差異について - Qiita」
に解がありました。
すなわち、該当の個所を
html = URI.open(uri).read
と記述することで、警告が表示されなくなりました。
|
|