middleman をアップデートしたらこれまでのプロジェクトでエラーになった場合の解決方法

このエントリーをはてなブックマークに追加

これまでいくつか middleman を使って構築してきたページがあり、それを middleman server のコマンドをたたいて確認をしていました。

先ほど middleman のアップデートをしてみたところ、これまでのプロジェクトで server コマンドを叩いてもエラーが出るようになってしまいました。

大したことない理由でしたが、若干ハマっていた人がいたので、解決方法をメモしておきます。

エラーの内容

エラーは下記のような状況だった

$ middleman server
/Users/username/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/bundler-1.5.3/lib
undle exec` to your command may solve this. (Gem::LoadError)
  from /Users/username/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/bund
  from /Users/username/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/bund
  from /Users/username/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/bund
  from /Users/username/.rbenv/versions/1.9.3-p484/lib/ruby/1.9.1/rubygems/custo
  from /Users/username/.rbenv/versions/1.9.3-p484/lib/ruby/1.9.1/rubygems/custo
  from /Users/username/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/midd
  from /Users/username/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/midd
  from /Users/username/.rbenv/versions/1.9.3-p484/bin/middleman:23:in `load'
  from /Users/username/.rbenv/versions/1.9.3-p484/bin/middleman:23:in `<main>'

ちなみに、今回のアップデートは 3.2.1 => 3.3.2 にしたというくらい。

exec のコメンドをいれたら解決するっぽいけど、ドキュメントを読んでもそんなことは書いていない。

では、問題はどこに?

middleman init での設定を確認

とりあえず、新規に init で用意したページではどうなるかも一応チェックしてみました。結果はエラーなく、普通に起動!?

あれ!?

違いを探すために Gemfile をチェックしたところ、理由は簡単、単にバージョン指定が古いままだったということ。

3.2.1 の Gemfile

# If you have OpenSSL installed, we recommend updating
# the following line to use "https"
source 'http://rubygems.org'

gem "middleman", "~>3.2.1"

# Live-reloading plugin
gem "middleman-livereload", "~> 3.1.0"

# For faster file watcher updates on Windows:
gem "wdm", "~> 0.1.0", :platforms => [:mswin, :mingw]

3.3.2の Gemfile

# If you have OpenSSL installed, we recommend updating
# the following line to use "https"
source 'http://rubygems.org'

gem "middleman", "~>3.3.2"

# Live-reloading plugin
gem "middleman-livereload", "~> 3.1.0"

# For faster file watcher updates on Windows:
gem "wdm", "~> 0.1.0", :platforms => [:mswin, :mingw]

# Windows does not come with time zone data
gem "tzinfo-data", platforms: [:mswin, :mingw]

Gemfile をアップデート後に bundle update

Gemfile をアップデートしたら、最後に bundle update をします。

$ bundle update

これで、 middleman server がエラーなく使えるようになります。