💎

Ruby 3.2 - 無くなったメソッド

2022/12/05に公開

Ruby 3.2 アドベントカレンダーの5日目の記事です。

https://qiita.com/advent-calendar/2022/ruby32


無くなったメソッド

Dir.exists? / File.exists?

Ruby 2.1 で Dir.exists?File.exists? は deprecated になった。
Dir.exist?File.exist? を使えと。

Warning[:deprecated] = true
Dir.exists?(".")
#=> warning: Dir.exists? is deprecated; use Dir.exist? instead
File.exists?(".")
#=> warning: File.exists? is deprecated; use File.exist? instead

とうとう Ruby 3.2 で無くなった。deprecated になってから無くなるまで長いな。

Dir.exists?(".")
#=> undefined method `exists?' for Dir:Class (NoMethodError)
File.exists?(".")
#=> undefined method `exists?' for File:Class (NoMethodError)

Object#=~

Ruby 2.6 で Object#=~ が deprecated になった。

Warning[:deprecated] = true
123 =~ /./  #=> nil
#=> warning: deprecated Object#=~ is called on Integer; it always returns nil

Ruby 3.2 で無くなった。

123 =~ /./  #=> nil
#=> undefined method `=~' for 123:Integer (NoMethodError)

まあ String と Regexp にあればいいよね。

[追記] nil (NilClass) にも残されてた。gets =~ /./ みたいなのがエラーにならないで欲しいということっぽい。

Object#taint / Object#untaint / Object#tainted? / Object#trust / Object#untrust / Object#untrusted?

Ruby 2.7 から taint 系のメソッドが deprecated になった。

Warning[:deprecated] = true
"hoge".taint       #=> warning: Object#taint is deprecated and will be removed in Ruby 3.2
"hoge".untaint     #=> warning: Object#untaint is deprecated and will be removed in Ruby 3.2
"hoge".tainted?    #=> warning: Object#tainted? is deprecated and will be removed in Ruby 3.2
"hoge".trust       #=> warning: Object#trust is deprecated and will be removed in Ruby 3.2
"hoge".untrust     #=> warning: Object#untrust is deprecated and will be removed in Ruby 3.2
"hoge".untrusted?  #=> warning: Object#untrusted? is deprecated and will be removed in Ruby 3.2

Ruby 3.2 で無くなった。

"hoge".taint       #=> undefined method `taint' for "hoge":String (NoMethodError)
"hoge".untaint     #=> undefined method `untaint' for "hoge":String (NoMethodError)
"hoge".tainted?    #=> undefined method `tainted?' for "hoge":String (NoMethodError)
"hoge".trust       #=> undefined method `trust' for "hoge":String (NoMethodError)
"hoge".untrust     #=> undefined method `untrust' for "hoge":String (NoMethodError)
"hoge".untrusted?  #=> undefined method `untrusted?' for "hoge":String (NoMethodError)

Discussion