Rails 5.1.0(Edge)とHaml 4系の組み合わせ警告ログ

Rails 5.1.0 (Edge) と Haml 4 系の組み合わせて、rails c /rails s / rails r といったコマンドを実行すると以下のような警告ログが出る。

% bunde exec rails c
DEPRECATION WARNING: ActionView::Template::Handlers::Erubis is deprecated and 
will be removed from Rails 5.2. Switch to ActionView::Template::Handlers::ERB::Erubi 
instead. (called from <module:Haml> at /Users/koic/.rbenv/versions/2.5.0-dev/lib
/ruby/gems/2.5.0/gems/haml-4.0.7/lib/haml/helpers/safe_erubis_template.rb:3)
Loading development environment (Rails 5.1.0.beta1)

この警告自体は Action View の CHANGELOG.md に書かれているように ERB ハンドラが Erubis から Erubi に変更されることによるもののようだ。

Haml 5.0.0 (beta.2) では railtie.rb の以下のコードで Haml::SafeErubiTemplateHaml::SafeErubisTemplate を使い分けるようになっているので、Haml 5.0.0 (beta.2) を使えばこの警告ログは消えることになる。

if defined? Erubi
  require "haml/helpers/safe_erubi_template"
  Haml::Filters::Erb.template_class = Haml::SafeErubiTemplate
else
  require "haml/helpers/safe_erubis_template"
  Haml::Filters::Erb.template_class = Haml::SafeErubisTemplate
end

github.com