Rails3とRuby1.9.2でHamlを使う方法

会社でRails3とHamlを使っているんですが、既に他の方が環境を作った上でコードを書いていたので、勉強のために一から環境構築をやってみました。

Rails環境構築

$ rvm 1.9.2
$ gem install rails
$ rails new rails3_haml
$ cd rails3_haml
$ bundle install vendor/bundle #必要なgemをvender/bundleに一括インストール
$ rails server

これでブラウザからhttp://localhost:3000にアクセスして動作していればひとまず最低限のRailsの環境構築はOK.

Hamlインストール

Gemfileにhaml-rails*1を追加。

gem 'haml-rails'

haml-railsはRails3にHaml Generatorを追加するためのプラグインです。
元々はrails3-generatorsだったものがHaml部分だけ分離したものらしいです。

もう一度bundle install

$ bundle install

これで準備は完了。
config/application.rbにg.template_engine :hamlのような記述を追加する必要はありません。

あとは試しにcontrollerをgenerateして動作確認してみましょう。

$ rails g controller sample index
      create  app/controllers/sample_controller.rb
       route  get "sample/index"
      invoke  haml     #template_engineがhamlに変わっている
       exist    app/views/sample
      create    app/views/sample/index.html.haml
      invoke  test_unit
      create    test/functional/sample_controller_test.rb
      invoke  helper
   identical    app/helpers/sample_helper.rb
      invoke    test_unit
   identical      test/unit/helpers/sample_helper_test.rb
$ rails server

これでhttp://localhost:3000/sample/indexにアクセスしてこんな画面が表示されればhamlが動作しています。
f:id:y_310:20100831005131p:image

*1:haml-railsを入れずにgem 'haml'だけでもHamlを使うことはできますが、rails gでファイルをgenerateする際にerbファイルが生成されてしまいます。これを手動で書き換えるか自分でファイルを作成する場合はhaml-railsは必要ありません。