Rock'n'Hack ブログ

それなりハッカーを目指して、もろもろのメモ。bloggerから引っ越しました。

bundle install で "Invalid .gemspec format" と出た時の対処メモ

あるrailsアプリをデプロイしようとして、

bundle install をしたら、

特定の gem が下記のような警告を出した。

WARNING: Invalid .gemspec format in '/usr/lib/ruby/gems/1.9.1/specifications/factory_girl_rails-1.6.0.gemspec'
WARNING: #<argumenterror: ["#<syck::defaultkey:0x00000008c8fb60="" illformed="" requirement=""> 3.0.7"]>

これはなんぞ?と思って gemspec ファイルとかを見てみたけど、ruby のことを
あまり理解してないのでよく分からず右往左往…。

識者に聞きつつ色々と試みたところ、結局gem のバージョンが古いのが原因だった。





# gem -v
1.3.7

1.3.7 はめちゃめちゃ古いらしい。

rubyの1.9.2を入れたらデフォで入ってたのでそれをそのまま使ってたよ…orz

ということで gem をアップデート。

# gem update --system

すると同じようなメッセージがつらつらと…

Invalid gemspec in [/usr/lib/ruby/gems/1.9.1/specifications/libv8-3.3.10.4-x86_64-linux.gemspec]: invalid date format in specification: "2011-11-15 00:00:00.000000000Z"
Invalid gemspec in [/usr/lib/ruby/gems/1.9.1/specifications/acts_as_audited-2.0.0.gemspec]: invalid date format in specification: "2011-09-12 00:00:00.000000000Z"
Invalid gemspec in [/usr/lib/ruby/gems/1.9.1/specifications/tilt-1.3.3.gemspec]: invalid date format in specification: "2011-08-25 00:00:00.000000000Z"
Invalid gemspec in [/usr/lib/ruby/gems/1.9.1/specifications/polyamorous-0.5.0.gemspec]: invalid date format in specification: "2011-09-03 00:00:00.000000000Z"
Invalid gemspec in [/usr/lib/ruby/gems/1.9.1/specifications/therubyracer-0.9.9.gemspec]: invalid date format in specification: "2011-11-08 00:00:00.000000000Z"
Invalid gemspec in [/usr/lib/ruby/gems/1.9.1/specifications/jquery-rails-1.0.19.gemspec]: invalid date format in specification: "2011-11-26 00:00:00.000000000Z"
Invalid gemspec in [/usr/lib/ruby/gems/1.9.1/specifications/meta_search-1.1.1.gemspec]: invalid date format in specification: "2011-09-03 00:00:00.000000000Z"
Invalid gemspec in [/usr/lib/ruby/gems/1.9.1/specifications/orm_adapter-0.0.6.gemspec]: invalid date format in specification: "2012-01-10 00:00:00.000000000Z"
RubyGems 1.8.17 installed

とりあえずリターンコードは 0 なので、インストールは出来ている模様。

しかし、gem コマンドを打つたびに上記のメッセージが表示されるため、無視は出来ない。

ちょっとググってみると、メッセージの通り日時のフォーマットがダメらしい。

×:2012-01-10 00:00:00.000000000Z
○:2012-01-10

そうゆうことなので、一括置換してしまった。

find . -name "*.gemspec" -exec sed -i 's/ 00:00:00.000000000Z//' {} \;

これで警告は出なくなった、一件落着。(多分…^^;)