読者です 読者をやめる 読者になる 読者になる

ERBをHamlに置換する

rails git haml

手元のアプリでなんとなくERBを使っていたのですが、 Haml使いたくなったので、置換してみました。

dhl/erb2haml: Simple script to bulk covert ERB files in a Rails app to Haml

使い方

Gemfileに突っ込んでbundleすれば、以下のrakeタスクが実行できるようになります。

rake haml:convert_erbs    # Perform bulk conversion of all html.erb files to Haml in views folder
rake haml:replace_erbs    # Perform bulk conversion of all html.erb files to Haml in views folder, then remove the converted html.erb files

注意点

置換なので rake haml:replace_erbs 後に git add / commit すると log が辿れなくなってしまいます。 通常は git mv ( or mv した後に git add .) するところなので、やり方がきれいではありませんが 以下で対応しました。

# 一旦Haml化 (erb/haml 両方が存在)
$ bundle exec rake haml:convert_erbs

# haml > hamlbk(hamlを一旦退避)
$ find app/views -name "*haml" -print0 | perl -pe 's/\.haml\0/\0/g' | xargs -0 -I% mv -f %.haml %.hamlbk

# git mv -f で haml に変更
$ find app/views -name "*erb" -print0 | perl -pe 's/\.erb\0/\0/g' | xargs -0 -I% git mv -f %.erb %.haml

# ここで一旦commit
$ git add app
$ git commit -m "Rename erb to haml"

# hamlbk > haml (退避したhamlを戻す)
$ find app/views -name "*hamlbk" -print0 | perl -pe 's/\.hamlbk\0/\0/g' | xargs -0 -I% mv -f %.hamlbk %.haml

# ここで再度コミット
$ git add app
$ git commit -m "Convert erb to hamle"

git log --follow で過去のログも見れるようになりました。