“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 |
これでエラーは発生しなくなります。