gemspecの日付形式の指定が無効です


111

Windowsで宝石を使用しようとすると、次のエラーが発生します。また、 このstackoverflowの投稿と更新されたrubygemsおよびrailsを参照しました。しかし、何も問題を解決できませんでした。

以下は完全なエラーです。

    D:\> gem env
[D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specificationsの無効なgemspec
/tilt-1.3.3.gemspec]:仕様の日付形式が無効です: "2011-08-25 00:00:00
.000000000Z」
[D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specificationsの無効なgemspec
/execjs-1.2.4.gemspec]:仕様の日付形式が無効です: "2011-08-03 00:00:
00.000000000Z」
[D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specificationsの無効なgemspec
/temple-0.3.3.gemspec]:仕様の日付形式が無効です: "2011-08-26 00:00:
00.000000000Z」
[D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specificationsの無効なgemspec
/guard-0.6.3.gemspec]:仕様に無効な日付形式: "2011-09-01 00:00:0
0.000000000Z」
[D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specificationsの無効なgemspec
/guard-livereload-0.3.1.gemspec]:仕様に無効な日付形式: "2011-09
-01 00:00:00.000000000Z」
[D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specificationsの無効なgemspec
/rack-cache-1.0.3.gemspec]:仕様の無効な日付形式: "2011-08-27 00
:00:00.000000000Z」
[D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specificationsの無効なgemspec
/tilt-1.3.3.gemspec]:仕様の日付形式が無効です: "2011-08-25 00:00:00
.000000000Z」
[D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specificationsの無効なgemspec
/execjs-1.2.4.gemspec]:仕様の日付形式が無効です: "2011-08-03 00:00:
00.000000000Z」
[D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specificationsの無効なgemspec
/temple-0.3.3.gemspec]:仕様の日付形式が無効です: "2011-08-26 00:00:
00.000000000Z」
[D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specificationsの無効なgemspec
/guard-0.6.3.gemspec]:仕様に無効な日付形式: "2011-09-01 00:00:0
0.000000000Z」
[D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specificationsの無効なgemspec
/guard-livereload-0.3.1.gemspec]:仕様に無効な日付形式: "2011-09
-01 00:00:00.000000000Z」
[D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specificationsの無効なgemspec
/rack-cache-1.0.3.gemspec]:仕様の無効な日付形式: "2011-08-27 00
:00:00.000000000Z」
RubyGems環境:
  -RUBYGEMSバージョン:1.7.2
  -ルビーバージョン:1.8.7(2011-06-30パッチレベル352)[i386-mingw32]
  -インストールディレクトリ:D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8
  -ルビー実行可能:D:/RailsInstaller/Ruby1.8.7/bin/ruby.exe
  -実行可能ディレクトリ:D:/RailsInstaller/Ruby1.8.7/bin
  -RUBYGEMSプラットフォーム:
    -ルビー
    -x86-mingw32
  -GEMパス:
     -D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8
     -C:/ Documents and Settings / jeygokul / .gem / ruby​​ / 1.8
  -GEMの設定:
     -:update_sources => true
     -:verbose => true
     -:benchmark => false
     -:backtrace => false
     -:bulk_threshold => 1000
  -リモートソース:
     -http://rubygems.org/

回答:


45

RubyGemsを1.8.10にアップグレードしてこの問題を修正しました

gem update --system

編集:試すこともできます(ZeissSの提案に従います)

gem install rubygems-update
update_rubygems

16
私は1.8.10を持っていますが、まだこれを取得しています
DGM

3
これらの警告を引き起こしている宝石については、「gem pristine [gemname]」を実行してみてください。
Michael

2
これも私にはうまくいきませんでした。なぜなら、「gem update --system」コマンドがまったく同じ問題を引き起こし、「gem pristine」は何もしなかったためです。@Romain_Tribesのソリューションに従い、gemの更新を再実行する前に手動でgemspecファイルを削除する必要がありました
Taryn East

4
これは、ubuntuで、特にカジュアルなルビーユーザーにとって、あまり良いオプションではありません。
Phillip Whelan

2
以下のGaborKomaromiの回答(またはコメントの検索結果の1つ)が機能します。これはしません。
gotofritz

132

究極の解決策はこれです:

Rubyディレクトリで「spec」ファイルを検索します。* C:\ Ruby187 \ lib \ ruby​​ \ gems \ 1.8 \ specifications *

gemspecファイルに次のようなものが含まれている場合:s.date =%q {2011-10-13 00:00:00.000000000Z }次に00:00:00.000000000Zの部分を削除します:s.date =%q {2011-10- 13}

これらのgemspecファイルを保存すると、問題は解決します。


2
これは私にとってはうまくいきました(ruby 1.8.7 / win7)、他のソリューションはうまくいきませんでした
Felix Alcala

3
Ruby 1.8.7、gem 1.7.2を使用して、ubuntuのチャームのように動作しました。ありがとう!
ダン

9
これにより、仕様ファイルから文字列が削除されます: "find。
Rainer Blessing

17
/var/lib/gems/1.8/specifications -name * .gemspec -type f | Ubuntuでのxargs perl -pi -e 's / 00:00:00 \ .000000000Z //'
kubek2k

4
sed -i 's/ 00:00:00.000000000Z//g' path_to_gemspecs
ペドロ・ロロ

46

これらの解決策はどれも私にとってうまくいきませんでした。それを修正するために、私は言及されたディレクトリ(some / path / to / specification /)のすべてのコンテンツを削除してから、必要なgemをインストールしました(実際には、Bundlerがバンドルインストール)。


これは簡単、迅速かつ効果的です。他の前にこれを試してください。
Tim Scollick、2011

1
私にとってもうまくいった唯一の解決策。しかし、これが正しい修正かどうかはわかりません。
Suren、2012年

これでうまくいきました。それは私をこの問題に導いたgem udpate --systemを実行していました!
Dave Isaacs

12

実行gem update --systemに加えてgem install <gem with bad gemspec>、不良と報告されたgem envの各アイテムを使用しました。これは私のマシンのエラーをクリーンアップしました。


5
「gem pristine [gemname]」で再インストールするか、「gem pristine --all」を実行して、再ダウンロードせずにキャッシュからgemを再インストールできます。
Michael

10

マイケルがコメントで言ったように:

gem pristine --all

6

Ubuntu 11.10にGEMをインストールしようとしたときに同じ問題が発生しました。

Invalid gemspec in [/var/lib/gems/1.8/specifications/svn2git-2.1.2.gemspec]: invalid date format in specification: "2011-12-28 00:00:00.000000000Z"

上記のオプションは私にはうまくいきませんでした。gem env次のように報告しました:

RubyGems Environment:
  - RUBYGEMS VERSION: 1.7.2
  - RUBY VERSION: 1.8.7 (2011-06-30 patchlevel 352) [i686-linux]

そのため、この問題は、RubyGemsの新しいバージョンをインストールする必要があったためだと思いました。

発行には、gem update --system次の警告をyeilded:

ERROR:  gem update --system is disabled on Debian, because it will overwrite the content of the rubygems Debian package, and might break your Debian system in subtle ways. The Debian-supported way to update rubygems is through apt-get, using Debian official repositories.
If you really know what you are doing, you can still update rubygems by setting the REALLY_GEM_UPDATE_SYSTEM environment variable, but please remember that this is completely unsupported by Debian.

しかし、私は次のようにrubygems発行することにより、ようやく1.8.15 に更新することができました。

sudo gem install rubygems-update && update_rubygems

その後はすべてうまくいきました。頑張ってください!:)


私にとってはUbuntuの上で、それは取りsudo apt-get purge rubygemsに続いsudo apt-get install rubygemsて、再度、すべての宝石をインストールします。ぎこちないが、少なくともそれは機能した:P(上記は私には機能しなかった)
Jeff Tratner 2012年

3

[/var/lib/gems/1.8/specifications/chronic-0.6.4.gemspec]の無効なgemspec:仕様の日付形式が無効です: "2011-09-09 00:00:00.000000000Z"

このような種類の問題に対する簡単な修正は、ファイルに移動することです。

ステップ1. cd /var/lib/gems/1.8/specifications
ステップ2.任意のエディターでファイル(chronic-0.6.4.gemspec)を開きます...(gedit chronic-0.6.4.gemspec)
ステップ3。 s.date =%q {2011-10-13 00:00:00.000000000Z}をs.date =%q {2011-10-13}に変更します

乾杯:)


2

10.10にアップグレードした後、ubuntuで同じ問題が発生しました。上記のどれも私にとってはうまくいきませんでした。http://rubygems.org/pages/downloadからupdate_rubygemsスクリプトをインストールして、一度実行する必要がありました。あとがきすべてが働いた。


2

s.date = s.date = "2011-08-25 00:00:00.000000000Z"の代わりにTime.nowは、他のファイルでも同じように使用できます。


2

宝石が多すぎて1つずつ修正できず、両方update_rubygemsを試してもgem pristine --allまだうまくいきません。

したがって、私はrvm clear gemset間違ったgemspecを持つすべてのgemを削除するために使用します。実行bundle installしてすべてのgemとViolaを再インストールします!


Unrecognized command line argument: 'clear' ( see: 'rvm usage' )
ジョナサン

1
rvm gemset empty your_gemset_name_or_global
taiansu

2
cd vendor/bundle/ruby/1.9.x/specifications
sed -i 's/ 00\:00\:00.000000000Z//g' *

1

実行することによって解決しようgem update --systemその後gem update


私にとってはうまくいきました、gem update --systemを実行した後にそのエラーが発生しました。それらのほとんどはgem update後に消えました。他の人のために私はgemspecファイルを削除しました。
mrbrdo

1

これらの回答に記載されているさまざまな解決策は私にとってはうまくいきませんでした。うまくいったのは、問題の宝石の特定のバージョンを再インストールすることでした。あなたの場合、それは次のようになります:

gem install tilt   -v 1.3.3
gem install execjs -v 1.2.4
gem install temple -v 0.3.3
gem install guard  -v 0.6.3
gem install guard-livereload -v 0.3.1
gem install rack-cache -v 1.0.3

私はそうだと思いますがgem pristine xxx yyy zzzgem pristine --all常に(いつまでも)gemリポジトリーに出て行くわけではないかもしれませんgem install xxx -v v.r.m

とにかく、問題のあるバージョンのgemを再インストールするのはうまくいきましたが、面倒でした...



1

「gem install ruby​​gems-update」、「update_rubygems」、「gem pristine --all」は、以前にリストされたものがどれも機能しなかったため、問題を解決した組み合わせです。


0

私の場合、参照されたgemバージョンはインストールされていませんでした。私はそれらの宝石を持っていましたが、宝石仕様であるバージョンはエラーを引き起こしていませんでした。そのため、/ path / to / specifications / offending-XYZZ.gemspecファイルをそれぞれ削除しました。


0

これは本当に答えではありませんが、誰かがもっと掘り下げたくなったら、このgemspec仕様をここで見つけました:http ://rubygems.rubyforge.org/rubygems-update/Gem/Specification.html (下にスクロールしてdate = date()をクリックし、ソースを表示するには):

@date = case date
when String then
  if %r\A(\d{4})-(\d{2})-(\d{2})\Z/ =~ date then
    Time.utc($1.to_i, $2.to_i, $3.to_i)
  else
    raise(Gem::InvalidSpecificationException,
          "invalid date format in specification: #{date.inspect}")
  end
when Time, Date then
  Time.utc(date.year, date.month, date.day)
else
  TODAY
end

したがって、これはそのgemspecを解析するコードであり、エラーを示すファイル内の日付形式がこれに準拠していないように見えます。

私がしたことは、上で提案されたようにそれらの問題のあるgemspecを手動で修正することでした(日付を「yyyy-mm-dd」に変更すると、それは私にとってはうまくいきます)。

この問題があったすべてのルビジェム仕様にもラインがあります

s.rubygems_version =%q {1.3.5}

だから私はこれらが単に古い宝石だと思いますか?とにかくそれらの%q {...}とは何ですか?


0

Ubuntu 11.04でこのエラーが発生した場合、私の解決策は次のコマンドラインでした:

$ sudo apt-get install ruby1.9.1

これを実行した後、日付エラーは発生しません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.