middleman 3.2系から3.3系へupgrade時、wrap_layoutに気をつける
2014.09.07 / ruby
ALOHA FISHMANSのサイトで使ってるmiddlemanのバージョンは、長らく3.2.0を使っていたのですが、いい加減そろそろ最新のバージョンにあげておくか。。と思ったところ、結構ハマったのでメモ。
空白のページがrenderされる
バージョンの変更はGemfileを書き換えてbundle updateすると、基本的にはOK。Gemfileのdiff的にはこんなかんじ。
gem "redcarpet", '~> 3.1.1' -gem "middleman", "~> 3.2.0" +gem "middleman", "~> 3.3.5" gem "middleman-blog", '~> 3.5.2' gem "middleman-minify-html", '~> 3.1.1' gem "middleman-deploy", '~> 0.2.3'
renderされるページの内容を確認していたところ、基本的に問題ないように見えつつ、blogページだけ何も出力されません。(bodyがカラ)
何か仕様が変わったんだろうと思いつつ、ChangeLog見てもよくわからないな。。。と途方に暮れて検索検索。
wrap_layout
の、ところ気になるIssueを発見。
見事これでした。テンプレートエンジンにhaml/slim を使っていて、wrap_layoutでレイアウトを上書きしているとき、
- wrap_layout :layout do ...
を
= wrap_layout :layout do ...
にしないとダメな模様。これで手元でも正常にbodyが出力されるようになりました。
で、よくよくChangeLog見直すと
Update Padrino to 0.12.1. Introduces BREAKING CHANGE for Haml. Helpers which take blocks used to require - instead of = to work correctly. Now, all helpers which output content should use =.
って、書いてるのが該当する話の模様。(気づかねぇ。。。)