いぬれおがんばれお

がんばる日記です

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 {} \;

こんな感じに!

f:id:inureo:20140808193904p:plain

コンバート後の対応

  • style記述に対応していない
  • scriptタグに対応していない
  • styleタグに対応していない
  • if、unlessのインデントがズレる

ある程度まではコンバートしてくれるのですが、上記の点で手直しが必要になります。

またslimの記述で角カッコでアトリビュートを囲う方法があるのですが、個人的には閉じ忘れが面倒になるので全て角カッコを抜いて下記のような形にしました。

h1 class="heading"

ザックリとですが備忘録的なメモです!

slimのREADME.md日本語訳 slim/README.md at README_ja · yterajima/slim