【Rails】HTMLテンプレートエンジンHamlの導入方法

スポンサーリンク

HTMLテンプレートエンジンの haml-rails を Rails に導入する方法です。

Gemfile に以下を追加してbundle installを実行します。

gem 'haml-rails'

ERB 形式のapplication.html.erbを Haml に変換します。変換が正常にされたら ERB のファイルを削除して下さい。

$ ./bin/rails generate haml:application_layout convert
Success! app/views/layouts/application.html.haml is created.
Please remove the erb file: app/views/layouts/application.html.erb

$ rm app/views/layouts/application.html.erb

すでに開発が進められている場合、その他の ERB ビューファイルも Haml に変換する必要があります。変換用の Rake タスクが追加されているので実行してください。gem 'erb2haml'は必要ありません。

$ ./bin/rake -T | grep haml
rake haml:erb2haml                      # Convert html.erb to html.haml each file in app/views

実行すると途中で元の ERB ファイルを削除するか確認されます。変換を確認した後で削除しても問題ありません。

$ ./bin/rake haml:erb2haml
Running via Spring preloader in process 52286
--------------------------------------------------------------------------------
Generating HAML for app/views/layouts/mailer.html.erb...
Generating HAML for app/views/layouts/mailer.text.erb...
--------------------------------------------------------------------------------
HAML generated for the following files:
        app/views/layouts/mailer.html.erb
        app/views/layouts/mailer.text.erb
--------------------------------------------------------------------------------
Would you like to delete the original .erb files? (This is not recommended unless you are under version control.) (y/n)
y
Deleting original .erb files.
--------------------------------------------------------------------------------
Task complete!
No .erb files found. Task will now exit.

rails generateコマンド使用時に生成される View が Haml に変わっています。

$ ./bin/rails generate controller users index
      create  app/controllers/users_controller.rb
       route  get 'users/index'
      invoke  haml
      create    app/views/users
      create    app/views/users/index.html.haml

以上で完了です。