Middlemanの拡張gemをv4.beta.2対応してハマったこと

このところの Middleman の変更も落ち着いて来たようなので公開している Middleman の拡張機能をアップデートしてみました。

やったこと

  • v4.beta でも拡張機能が動作するように gemspec の依存関係を変更
  • .travis.yml から Ruby v1.9 関係の処理を削除
  • v4.beta.x と併用した場合に落ちるテストへの対応

対応したもの

  • middleman-generator-tag
  • middleman-remover
  • middleman-robots
  • middleman-remove-indent

テストが落ちたものと原因

app.build_dir がいない

app.build_dir は Middleman が静的ファイルを build する先のディレクトリを返していました。しかし. v4.beta.2 からこの方法ではディレクトリが取れずエラーします。

app.config.build_dir または app.config[:build_dir] で同じ情報を参照できます。この参照方法は v3.3系でも問題なく動作します。

after_build コールバックで build/hoge/* の中身を空にすると build/hoge 自体も削除される

middleman-remover のテストなぜか落ちました。調べてみても原因がパッと判明せず。そこでデバッグコードを仕込んで調べたところ after_build コールバックを利用して特定のディレクトリの中身を空にすると, どうやらそのディレクトリ自体も削除してくれるらしい挙動を確認しました。

Middleman のバージョンによって挙動が変わるので cucumber のタグ機能を使い Rakefile に定義した test タスク内で処理を変更して対応しています。

Add cucumber tags

参考: Tags · cucumber/cucumber Wiki