middleman-blogでyearやmonthやdayやtagページの生成をしない方法

middleman

"middleman build --verbose" 実行時にエラーが発生

mddleman build --verboseで下のようなエラーが出ました。

1
2
error  build/2015/index.html
undefined local variable or method `month' for #<Middleman::Application:0x70289256449720>

エラーの全量のログはこちら
middleman-blogのバージョンはv3.6.0.beta.2です。

原因

middleman-blogは年ごと、月ごと、日ごとの一覧ページを自動的に生成します。ただ、私の場合は月ごとのみしか必要としていないので、calendar.slimを月ごと専用に変更してしまっています。
それなのに、middleman-blogは年ごとのページを生成しようとし、calendar.slimでmonthという変数が呼ばれてしまい、エラーが発生するということです。

解決策

現状のバージョンだとできないのですが、まだリリースバージョンにはマージされていないpull requestでそれぞれのページの生成をしないようにする機能が追加されました。

Add option to disable generating year, month, day or tag pages #235

これは後々リリースされると思いますが、現時点でも以下のようにすると使うことができます。

Gemfileの修正

middleman-blogの行を以下のように修正します。上記のpull requestのバージョンを直接 指定しています。

1
2
gem 'middleman-blog', git: "https://github.com/middleman/middleman-blog.git",
  ref: "a1a34b6ac73553c7f1e93b922dd2ceed9879af2c"

そしてbundle installをコマンドラインで実行します。

config.rbに追加

middleman-blogの設定をする箇所で、以下のように生成を止めたいページに対して、falseを指定します。

1
2
3
4
5
6
7
8
activate :blog do |blog|
  ...
  blog.generate_year_pages  = false
  blog.generate_month_pages = false
  blog.generate_day_pages   = false
  blog.generate_tag_pages   = false
  ...
end

これでエラーは発生しなくなります。

羊毛や小麦