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
としたら無事インストール完了しました。