Railsのviews配下にある.erbファイルをslimに変換する
現在の業務で行っているプロジェクトでは、コーディングをデザイナーさんにやっていただいていたのでerbを使っています。しかしhtmlって長いよね、閉じるの面倒だよね、ということでslimに移行することにしました。(レンダリング時間が一番速いしね!)
デザイナーさんも新しいこと覚えたい!と前のめりだったので、取り敢えず現状のerbをslimに変換する方法を探す。
導入まで
サクーっと検索するとerbからhaml、そしてhamlからslimに変換する方法がよく出てきました。エントリを読んでみると変換途中でトラブルが起こるみたいだったので、なんとか一括で変換できるものがないか探してみるとやっぱりありました。
コミットログを見てみると2013/4にファーストバージョンがコミットされ、昨年末から活発になってきている模様です。
GitHub: slim-template/html2slim
参考サイト: Railsのviewsディレクトリ以下の.erbファイルをSlimに一括変換するgem (html2slim) とワンライナー記述 | もっちブログ 3/3 Slimテンプレートエンジンを使ってHTMLを出力する [Ruby] All About
いざ導入
コンバート
参考サイトに沿って進めていきます。projectにいれるのではなくローカルにhtml2slimをインストールします。
$ gem install html2slim
無事に入ったと思ったらcommand not found、、下記を試す
$ rbenv exec gem install html2slim
はいった!bundlerを雰囲気で使ってるのでここらへんはちゃんと調べてブログにまとめます。
$ rbenv exec html2slim -h Usage: html2slim INPUT_FILENAME_OR_DIRECTORY [OUTPUT_FILENAME_OR_DIRECTORY] [options] --trace Show a full traceback on error -d, --delete Delete HTML files -h, --help Show this message -v, --version Print version
rbenv execも外してOK
$ html2slim -h Usage: html2slim INPUT_FILENAME_OR_DIRECTORY [OUTPUT_FILENAME_OR_DIRECTORY] [options] --trace Show a full traceback on error -d, --delete Delete HTML files -h, --help Show this message -v, --version Print version
参考サイトにのっているワンライナーだとactive_admin、deviseを使っている場合ディレクトリが深い部分もあるので別のサイトのものを使用。(rbenvの部分はbundleなどに変更してみてくださいね)
find app/views -name "*.erb" -exec bundle exec erb2slim {} \;
こんな感じに!
コンバート後の対応
- style記述に対応していない
- scriptタグに対応していない
- styleタグに対応していない
- if、unlessのインデントがズレる
ある程度まではコンバートしてくれるのですが、上記の点で手直しが必要になります。
またslimの記述で角カッコでアトリビュートを囲う方法があるのですが、個人的には閉じ忘れが面倒になるので全て角カッコを抜いて下記のような形にしました。
h1 class="heading"
ザックリとですが備忘録的なメモです!
slimのREADME.md日本語訳 slim/README.md at README_ja · yterajima/slim