Ruby 2.6 で変更される ERB.new
のメソッド引数に関する Cop となる (Ruby 2.5 までの ERB.new
のメソッド引数は非推奨となるので追加ともいえる) 。
Rails, Bundler, Thor, RSpec (Core) , RuboCop などメジャーどころの Gem にはすでにこの対応を送っているが、未だこのメソッド引数に対応していない Gem や今後のアプリケーション向きに作っておいた。
実は実装自体は1ヶ月くらい前からしていたが、Ruby 2.5 以前のメソッド引数との条件分岐を作る際の good サンプルに関するドキュメントをどうするか悩んでいたので、そのあたり Ruby x Elixir Conf Taiwan 2018 で k0kubun さんに聞いたりして今回 PR への運びとなった。
Examples としては以下。
# Target codes supports Ruby 2.6 and higher only # bad ERB.new(str, nil, '-') # Target codes supports Ruby 2.5 and lower only # good ERB.new(str, trim_mode: nil, eoutvar: '-') # Target codes supports Ruby 2.6, 2.5 and lower # bad ERB.new(str, nil, '-') # good # Ruby standard library style # https://github.com/ruby/ruby/commit/3406c5d if ERB.instance_method(:initialize).parameters.assoc(:key) # Ruby 2.6+ ERB.new(str, trim_mode: nil, eoutvar: '-') else ERB.new(str, nil, '-') end # good # Use `RUBY_VERSION` style if RUBY_VERSION >= '2.6' ERB.new(str, trim_mode: nil, eoutvar: '-') else ERB.new(str, nil, '-') end
マージされたら次の RuboCop のリリースあたりに入ると思う。