Ungültige Datumsformatangabe in gemspec

111

Ich erhalte die folgende Fehlermeldung, wenn ich versuche, Edelsteine ​​in Windows zu verwenden, und ich habe auch auf diesen Stackoverflow-Beitrag verwiesen und Rubygems und Rails aktualisiert. Aber nichts konnte das Problem lösen.

Das Folgende ist der vollständige Fehler:

    D: \> gem env
Ungültige Gemspec in [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/tilt-1.3.3.gemspec]: Ungültiges Datumsformat in Spezifikation: "2011-08-25 00:00:00
.000000000Z "
Ungültige Gemspec in [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/execjs-1.2.4.gemspec]: Ungültiges Datumsformat in Spezifikation: "2011-08-03 00:00:
00.000000000Z
Ungültige Gemspec in [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/temple-0.3.3.gemspec]: Ungültiges Datumsformat in Spezifikation: "2011-08-26 00:00:
00.000000000Z
Ungültige Gemspec in [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/guard-0.6.3.gemspec]: Ungültiges Datumsformat in Spezifikation: "2011-09-01 00: 00: 0
0,000000000Z
Ungültige Gemspec in [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/guard-livereload-0.3.1.gemspec]: Ungültiges Datumsformat in Spezifikation: "2011-09
-01 00: 00: 00.000000000Z
Ungültige Gemspec in [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/rack-cache-1.0.3.gemspec]: Ungültiges Datumsformat in Spezifikation: "2011-08-27 00
: 00: 00.000000000Z "
Ungültige Gemspec in [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/tilt-1.3.3.gemspec]: Ungültiges Datumsformat in Spezifikation: "2011-08-25 00:00:00
.000000000Z "
Ungültige Gemspec in [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/execjs-1.2.4.gemspec]: Ungültiges Datumsformat in Spezifikation: "2011-08-03 00:00:
00.000000000Z
Ungültige Gemspec in [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/temple-0.3.3.gemspec]: Ungültiges Datumsformat in Spezifikation: "2011-08-26 00:00:
00.000000000Z
Ungültige Gemspec in [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/guard-0.6.3.gemspec]: Ungültiges Datumsformat in Spezifikation: "2011-09-01 00: 00: 0
0,000000000Z
Ungültige Gemspec in [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/guard-livereload-0.3.1.gemspec]: Ungültiges Datumsformat in Spezifikation: "2011-09
-01 00: 00: 00.000000000Z
Ungültige Gemspec in [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/rack-cache-1.0.3.gemspec]: Ungültiges Datumsformat in Spezifikation: "2011-08-27 00
: 00: 00.000000000Z "
RubyGems-Umgebung:
  - RUBYGEMS-VERSION: 1.7.2
  - RUBY VERSION: 1.8.7 (30.06.2011 Patchlevel 352) [i386-mingw32]
  - INSTALLATIONSVERZEICHNIS: D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: D: /RailsInstaller/Ruby1.8.7/bin/ruby.exe
  - AUSFÜHRBARES VERZEICHNIS: D: /RailsInstaller/Ruby1.8.7/bin
  - RUBYGEMS-PLATTFORMEN:
    - Rubin
    - x86-mingw32
  - GEM-WEGE:
     - D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8
     - C: / Dokumente und Einstellungen / jeygokul / .gem / ruby ​​/ 1.8
  - GEM-KONFIGURATION:
     -: update_sources => true
     -: verbose => true
     -: Benchmark => falsch
     -: backtrace => false
     -: batch_threshold => 1000
  - FERNQUELLEN:
     - http://rubygems.org/
Abhishek
quelle

Antworten:

45

Ich habe dieses Problem behoben durch meine RubyGems zu 1.8.10 Upgrade mit

gem update --system

Bearbeiten: Sie können es auch versuchen (wie von ZeissS vorgeschlagen)

gem install rubygems-update
update_rubygems
Michael
quelle
16
Ich habe 1.8.10 und bekomme immer noch diese
DGM
3
Versuchen Sie, "gem pristine [gemname]" für die Edelsteine ​​auszuführen, die diese Warnungen verursachen.
Michael
2
Dies funktionierte auch bei mir nicht - da der Befehl "gem update - system" genau das gleiche Problem verursachte und "gem pristine" nichts tat. Ich musste der Lösung von @ Romain_Tribes folgen und die gemspec-Dateien von Hand löschen, bevor ich ein gem-Update erneut ausführte
Taryn East
4
Dies ist keine sehr gute Option für Ubuntu, insbesondere für gelegentliche Ruby-Benutzer.
Phillip Whelan
2
Die Antwort von GaborKomaromi unten (oder einer der Funde .. in den Kommentaren) funktioniert. Dieser tut es nicht.
Gotofritz
132

Die ultimative Lösung ist folgende:

Durchsuchen Sie "spec" -Dateien in Ihrem Ruby-Verzeichnis: * C: \ Ruby187 \ lib \ ruby ​​\ gems \ 1.8 \ specs *

Wenn eine gemspec-Datei Folgendes enthält: s.date =% q {2011-10-13 00: 00: 00.000000000Z } Löschen Sie dann den Teil 00: 00: 00.000000000Z : s.date =% q {2011-10- 13}

Nach dem Speichern dieser gemspec-Dateien ist das Problem behoben.

GaborKomaromi
quelle
2
Dies funktionierte für mich (Ruby 1.8.7 / Win7), die anderen Lösungen nicht
Felix Alcala
3
Arbeitete wie ein Zauber auf Ubuntu mit Rubin 1.8.7, Edelstein 1.7.2. Vielen Dank!
Dan
9
Dadurch wird die Zeichenfolge aus der Spezifikationsdatei entfernt: "find. -Type f | xargs perl -pi -e 's / 00: 00: 00 \ .000000000Z //'"
Rainer Blessing
17
find /var/lib/gems/1.8/specifications -name * .gemspec -type f | xargs perl -pi -e 's / 00: 00: 00 \ .000000000Z //' in Ubuntu
kubek2k
4
sed -i 's/ 00:00:00.000000000Z//g' path_to_gemspecs
Pedro Rolo
46

Keine dieser Lösungen hat bei mir funktioniert. Um das Problem zu beheben, habe ich den gesamten Inhalt des genannten Verzeichnisses entfernt (einige / path / to / specation /) und dann die benötigten Edelsteine ​​installiert (eigentlich Bundler, dann Bundle-Installation).

Romain Stämme
quelle
Dies ist einfach, schnell und effektiv. Versuchen Sie dies vor allen anderen.
Tim Scollick
1
Einzige Lösung, die auch bei mir funktioniert hat. Aber nicht sicher, ob dies die richtige Lösung ist.
Suren
Das hat bei mir funktioniert. Es lief gem udpate - System, das mich zu diesem Problem brachte!
Dave Isaacs
12

Zusätzlich zum Laufen habe gem update --systemich gem install <gem with bad gemspec>für jeden Gegenstand Edelstein verwendet, der als schlecht gemeldet wurde. Dadurch wurden die Fehler auf meinem Computer behoben.

TheArtTrooper
quelle
5
Sie können mit "gem pristine [gemname]" neu installieren oder mit "gem pristine --all" die Edelsteine ​​aus dem Cache neu installieren, ohne sie erneut herunterzuladen.
Michael
10

Wie Michael im Kommentar sagte:

gem pristine --all
Flügelfeuer
quelle
6

Hatte das gleiche Problem beim Versuch, ein GEM unter Ubuntu 11.10 zu installieren.

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"

Die oben genannten Optionen haben bei mir nicht funktioniert. gem envberichtete über Folgendes:

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

Daher nahm ich an, dass dieses Problem auf die Tatsache zurückzuführen ist, dass ich eine neuere Version von RubyGems installiert habe.

Bei der Ausgabe gem update --systemwurde die folgende Warnung ausgegeben:

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.

Allerdings konnte ich endlich rubygemsauf 1.8.15 aktualisieren , indem ich Folgendes herausgab:

sudo gem install rubygems-update && update_rubygems

Danach hat alles geklappt, viel Glück! :) :)

JonnyReeves
quelle
Für mich auf Ubuntu, dauerte es sudo apt-get purge rubygemsanschließend sudo apt-get install rubygemsund dann alle wieder die Edelsteine zu installieren. Umständlich, aber zumindest hat es funktioniert: P (das oben genannte hat bei mir nicht funktioniert)
Jeff Tratner
3

Ungültige gemspec in [/var/lib/gems/1.8/specifications/chronic-0.6.4.gemspec]: ungültiges Datumsformat in Spezifikation: "2011-09-09 00: 00: 00.000000000Z"

Die einfache Lösung für ein solches Problem besteht darin, zur Datei zu navigieren.

Schritt 1. cd /var/lib/gems/1.8/specifications
Schritt 2. Öffnen Sie die Datei (chronisch-0.6.4.gemspec) im Editor Ihrer Wahl ... (gedit chronisch-0.6.4.gemspec)
Schritt 3. Ändern Sie das Datum =% q {2011-10-13 00: 00: 00.000000000Z} in Datum =% q {2011-10-13}.

Prost :)

Süchtig
quelle
2

Ich hatte gerade das gleiche Problem auf meinem Ubuntu nach dem Upgrade auf 10.10. Keines der oben genannten hat bei mir funktioniert. Ich musste das Skript update_rubygems von http://rubygems.org/pages/download installieren und einmal ausführen. Nachworte hat alles geklappt.

ZeissS
quelle
2

Ich habe dieses Problem behoben, indem ich die entsprechende Zeile in D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications/tilt-1.3.3.gemspec durch Setzen von s.date = geändert habe Time.now anstelle von s.date = "2011-08-25 00: 00: 00.000000000Z" Dasselbe kann auch für die anderen Dateien verwendet werden.

Sanitha
quelle
2

Ich habe zu viele Edelsteine, um sie einzeln zu reparieren, und versuche beide update_rubygemsund gem pristine --allimmer noch kein Glück.

Also rvm clear gemsetentferne ich alle Edelsteine ​​mit falscher Edelsteinspezifikation. Führen Sie aus bundle install, um alle Edelsteine ​​und Viola neu zu installieren!

Taiansu
quelle
Unrecognized command line argument: 'clear' ( see: 'rvm usage' )
Jonathan
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' *
Anno2001
quelle
1

Gelöst durch Laufen gem update --systemdann gem update.

David Walsh
quelle
hat für mich funktioniert, ich habe gerade diesen Fehler nach dem Gem Update - System bekommen, die meisten von ihnen sind nach dem Gem Update verschwunden. für andere habe ich die gemspec datei entfernt.
Mrbrdo
1

Die verschiedenen Lösungen in diesen Antworten haben bei mir nicht funktioniert. Was funktionierte, war die Neuinstallation der spezifischen Versionen der beleidigenden Edelsteine. In Ihrem Fall würde das so aussehen:

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

Ich denke, dass gem pristine xxx yyy zzzoder gem pristine --allkönnte nicht immer (jemals?) Zu den Edelstein-Repositories gehen, wohingegen gem install xxx -v v.r.m.

Wie auch immer, die Neuinstallation der fehlerhaften Versionen der Edelsteine ​​hat bei mir funktioniert, obwohl es mühsam war ...

Chris Markle
quelle
1

rvm gemset clearund dann bundle installfür mich gearbeitet!

Vibhuti
quelle
1

"gem install rubygems-update", "update_rubygems", dann "gem pristine --all" ist die Kombination, die das Problem für mich gelöst hat, nachdem keine der zuvor aufgelisteten funktioniert hat.

Brian Knoblauch
quelle
0

In meinem Fall wurden die referenzierten Gem-Versionen nicht einmal installiert. Ich hatte diese Edelsteine, aber nicht die Versionen, deren Edelsteinspezifikationen den Fehler verursachten. Also habe ich gerade jede der Dateien /path/to/specifications/offending-XYZZ.gemspec gelöscht.

Jon Garvin
quelle
0

Dies ist nicht wirklich eine Antwort, aber wenn jemand Lust hat, mehr zu graben, habe ich diese gemspec-Spezifikation hier gefunden: http://rubygems.rubyforge.org/rubygems-update/Gem/Specification.html (scrollen Sie nach unten zu date = date () und klicken Sie Quelle anzeigen):

@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

Ich denke, dies ist der Code, der diese gemspec analysiert, und es sieht einfach so aus, als ob das Datumsformat in den Dateien, die Fehler anzeigen, nicht mit diesem übereinstimmt.

Was ich getan habe, war, diese störenden Edelsteinspezifikationen wie oben vorgeschlagen manuell zu reparieren (das Ändern der Daten in "JJJJ-MM-TT", es funktioniert für mich.

Alle Rubygem-Spezifikationen, die ich hatte und die dieses Problem hatten, haben auch eine Linie

s.rubygems_version =% q {1.3.5}

Ich vermute also, dass dies nur alte Edelsteine ​​sind? Und was ist überhaupt mit diesen% q {...}?

PapaFreud
quelle
0

Wenn Sie diesen Fehler unter Ubuntu 11.04 hatten, war meine Lösung die folgenden Befehlszeilen:

$ sudo apt-get install ruby1.9.1

Danach erhalten Sie keinen Datumsfehler mehr.

mazyZed
quelle