40歳からのキャリアチェンジ

20代はエンジニア・PM、30代はWeb系エンジニア向けのキャリアアドバイザー。40代の今はフリーランスで開発含めて色々やってます。技術ネタとしてはRuby/RailsとJavaScript関連あたり

gemのインストール時に invalid date format in specification でエラー

Ruby+Sinatra+MongoDBで作っていたアプリを手元の新MacbookAirでも動作させるようにするために、必要なgemのインストールをしていたのですが、一部のgem(MongoDBに対応したORMのMongoid)だけ

Invalid gemspec in [/Library/Ruby/Gems/1.8/specifications/mongoid-2.1.1.gemspec]: invalid date format in specification: "2011-07-31 00:00:00.000000000 %:z"

というエラーが出てうまくインストール出来ませんでした。

Fix invalid specs resulting from incorrect syck time parsingというページを眺めていたら

Check the generated gemspec for the installed gem. The date will appear formatted like "%q{2011-04-26 00:00:00.000000000Z}". This is incorrect; it should be formatted like "%q{2011-04-26}".

という記述が目に止まったので、/Library/Ruby/Gems/1.8/specifications配下にあるgemspecファイルで正しくインストールできたgemspecと今回問題になっているgemspecをそれぞれ調べてみました。

すると

  • 正常にインストールできたもの:s.date = %q{2011-07-23}
  • 今回インストール失敗しているもの:s.date = %q{2011-07-31 00:00:00.000000000 %:z}

という感じで、日付のフォーマットの記述がおかしくなっていたので

sudo vi /Library/Ruby/Gems/1.8/specifications/mongoid-2.1.1.gemspec

として、上記の日付の記述箇所を

s.date = %q{2011-07-31}

に修正して

sudo gem install mongoid

としたら無事インストール完了しました。