Ungültige Gemspec aufgrund des Datumsformats in der Spezifikation


89

Wenn ich einen Edelstein, den ich dank Bundler (Version 1.0.12) gemacht habe, in eine Gemfile einfüge und dann versuche ich einfach so zu bündeln oder zu harken:

$ rake

Ich habe diese Fehlermeldung erhalten:

Invalid gemspec in [/Users/zagzag/.rvm/gems/ruby-1.9.2-p180@foobar/specifications/myplugin-1.0.0.gemspec]: invalid date format in specification: "2011-04-21 00:00:00.000000000Z"

Ich bin auf dem letzten Mac OS X (10.6.4), mit:

$ ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.4.0]

und:

$ gem -v
Invalid gemspec in [/Users/zagzag/.rvm/gems/ruby-1.9.2-p180@foobar/specifications/myplugin-1.0.0.gemspec]: invalid date format in specification: "2011-04-21 00:00:00.000000000Z"
1.7.2

Ich sehe wirklich nicht, wie ich dieses Problem lösen kann. Vielen Dank für alle Ideen.


Ich bekomme diese Fehler jetzt ständig !!! Wie hast du das behoben? Zwei Antworten sind bisher nicht hilfreich ...
Meltemi

Das, was jeder vorgeschlagen hat, ist eine schreibgeschützte Datei. Wie kann ich das ändern?
Chhantyal

Antworten:


143

So behebe ich den Fehler "Ungültiges Datumsformat in Spezifikation":

1.) Wechseln Sie in den Spezifikationsordner unter:

/usr/local/lib/ruby/gems/1.8/specifications/

2.) Suchen Sie die Spezifikation, die das Problem verursacht.

3.) Wechseln Sie s.date = %q{2011-05-21 00:00:00.000000000Z}zus.date = %q{2011-05-21}

Das ist ein Gewinn für mich! Viel Glück


Arbeitete eine Belohnung, das tat mir den Kopf rein!
David Archer

Hat für mich gearbeitet! Ich war unter Windows XP mit Ruby 1.8 installiert. Die em.websocket-0.3.2.gemspec hat diesen Fehler für mich ausgelöst, als ich versucht habe, 'Livereload' ( Livereload.com ) zu verwenden.
Programm247365

Arbeitete auch für mich, unter Linux auf chronischen 1.6.4
Gepsens

Es behebt das Problem für einen Edelstein, aber das Folgen installierter Edelsteine ​​kann diesen Fehler erneut verursachen.
MickaelFM

2
Das macht mich verrückt ... soll ich die Edelsteinspezifikation von 50 Edelsteinen von Drittanbietern ändern? Warum haben sie die Gemspecs nicht aktualisiert? Ein Jahr ist vergangen.
Oma

60

Hier ist der Befehl, um dies für alle Ihre Edelsteine ​​zu beheben:

perl -p -i -e 's/ 00:00:00.000000000Z//' ~/gems/specifications/*.gemspec

Es konvertiert s.date = %q{2011-05-21 00:00:00.000000000Z}zu s.date = %q{2011-05-21}und sollte Ihr Problem beheben.


Netter Trick, um ein schnelles Backup zu machen, bevor Sie dies tun:git init . && git commit -am "backup
troyt

Warum sollte ich versuchen, das Datumsformat zu ändern? Ich habe keine Berechtigung dazu. Was ist zu tun?
Chhantyal

@chhantyal Sie müssen es dann als sudo ausführen. Vielen Dank dafür! Hat mir so viel Zeit gespart.
Matt McClure

21

Bitte beachten Sie den Kommentar von Damian Nowak. Diese Befehle bringen möglicherweise Ihre Rubingems durcheinander!

Unter Ubuntu 11.10 wurde dieser Fehler durch Folgendes behoben:

sudo gem install rubygems-update
sudo update_rubygems     

Folgendes kann auf einigen Systemen funktionieren, jedoch nicht auf Debian-Basis:

sudo gem update --system

Großartig, funktioniert auch mit der endgültigen Version von oneiric. Dies scheint jedoch alle manuell installierten Edelsteine ​​zu entfernen.
Zehrer

1
Benutze es nicht. Es hat meine Rubingems durcheinander gebracht. Ich musste viele Sachen rm-rf und auf die ursprünglichen Rubingems aus dem Repo zurückgreifen. Installieren Sie Rubygems entweder vollständig manuell oder verwenden Sie die von Ubuntu bereitgestellten Rubygems. Alternativ können Sie in PPA nach aktuellen Rubygems suchen. (Ich wünschte, ich könnte meine +1 rückgängig machen, die vor ungefähr einem Monat gemacht wurde)
Nowaker

1
@ DamianNowak Tut mir leid das zu hören. Ich habe der Antwort eine Warnung hinzugefügt!
Mark

14

Sie können Ihr Upgrade durchführen gem. Um dies zu beheben, können Sie die gemspecDatei direkt bearbeiten - von

2011-04-21 00:00:00.000000000Z

zu

YYYY-MM-DD

Oder rüsten Sie auch Ihre Schienen auf

sudo gem update rails

Es wird das Problem beheben.


@Meltemi es wird unter specificationsVerzeichnis sein, das ist mein specificationsVerzeichnispfad -/home/sayuj/.rvm/gems/ruby-1.9.2-p180/specifications/
Sayuj

+1 für die Aktualisierung von Schienen - das Problem wird behoben, obwohl am Anfang dieselben Warnungen ausgegeben werden, die Installation korrekt ist und das Problem nicht mehr auftritt.
Adam Davis

6

Geben Sie nicht die Uhrzeit an, sondern nur das Datum. 2011-04-21sollte gut funktionieren.


Gem :: Specification.new do | s | s.name = "myplugin" s.version = "1.0.0" s.platform = Gem :: Platform :: RUBY s.authors = ["..."] s.email = ["..."] s .homepage = "http: // ..." s.summary =% q {...} s.description =% q {...} s.rubyforge_project = "myplugin" s.files = git ls-files.split ("\ n ") s.test_files = git ls-files -- {test,spec,features}/*.split (" \ n ") s.require_paths = [" lib "] end
Zag zag ..

Danke für deine Antwort. Ich stimme Ihnen zu, habe jedoch kein Datum oder keine Uhrzeit in der Datei myplugin.gemspec verwendet. Der Edelstein wurde von Bundler automatisch generiert. Ich denke, dieses Problem könnte an Bundler oder RVM liegen ... Es ist seltsam.
Zag Zag ..

4

Hatte das gleiche Problem. Es sieht aus wie ein Fehler in Rubygems. Hier ist das Commit, das das Problem behoben hat: https://github.com/rubygems/rubygems/commit/21cccd55b823848c5e941093a615b0fdd6cd8bc7

Sie müssen rubygems und bundler auf die neuesten Versionen aktualisieren. Wenn Sie danach immer noch Probleme haben, müssen Sie möglicherweise alle Edelsteine ​​entfernen und neu installieren, die Ihnen Probleme bereiten.


Nun, außer dass Redmine seine eigene 2.3.11-Version von Rails verwendet, schlägt Rails 2.3.11 mit RubyGems> = 1.7.0 fehl und das von Ihnen erwähnte Commit ist vom 19. Mai 2011, das nach 1.7.0 (1. April) ist. 2011). In diesem Fall müssen Sie die Spezifikationsdateien bearbeiten.
Olivier 'Ölbaum' Scherler

3

Dies ist eher ein Kommentar zu Ben Halls Antwort, aber ich habe dieses Privileg noch nicht, wie es scheint

Edelstein-Updates schienen nicht zu funktionieren, ich denke, sie können den Edelstein wegen des schlechten Datumsformats nicht einmal laden. Das manuelle Ändern der Daten war zu frustrierend, um nacheinander zu gehen.

grep -i *.gemspec -e '.*s\.date.*=.*%q{\(....-..-..\) \(.*Z\)}

Und für sed:

sed -i -e 's/\(.*\)s\.date.*=.*%q{\(....-..-..\) \(.*Z\)}/\1s.date = %q\{\2}/p' ./*.gemspec

Und auf eigenes Risiko !! Ich bin immer noch ein Neuling, aber es hat bei mir funktioniert;)


2

Auf meinem Slicehost-Server befand sich der Spezifikationsordner an einer anderen Stelle. Hier ist der Weg:

/usr/lib/ruby/gems/1.8/specifications

Der angegebene Fehler sollte den Pfad zum Spezifikationsordner angeben.


2

Der Shotgun-Ansatz: Deinstalliere alle Edelsteine ​​und führe den Bundler erneut aus.

  1. gem list --no-version | xargs gem uninstall -aIx
  2. rm -i `rvm gemdir`/specifications/*.gemspec
  3. gem update --system
  4. gem install bundler
  5. bundle install

Wenn Sie eine .rvmrcDatei verwenden, führen Sie Zeile 2 vorsichtig aus, da gemdir möglicherweise zusätzliche Ausgaben erzeugt.
Jared Beck

1

(Bis die Fehlerbehebung in einer stabilen Version von Rubygems verfügbar ist) Ich habe sie behoben, indem ich dieselbe Version aller Warnungen generierenden Edelsteine ​​mit dem Schalter --version des Befehls gem neu installiert habe.


1

Wie Ben Hall sagte, müssen Sie die gemspec-Datei reparieren, die sich von System zu System ändern kann. Um zu wissen, um welche Datei es sich handelt, sehen Sie, welche Datei im Fehlerbericht angegeben ist. Beispiel:

Ungültige gemspec in [/var/lib/gems/1.8/specifications/svn2git-2.1.2.gemspec]: ungültiges Datumsformat in Spezifikation: "2011-12-28 00: 00: 00.000000000Z"

In diesem Beispiel müssen Sie die Datei "/var/lib/gems/1.8/specifications/svn2git-2.1.2.gemspec" bearbeiten und "2011-12-28 00: 00: 00.000000000Z" für "2011-12-28" ändern. in s.date Option.


1

Hatte dieses Problem jetzt noch. Das Aktualisieren von Rubygems hat es gut gelöst:

gem update --system

0

Das ist meine Umgebung:

RubyGems Environment:
- RUBYGEMS VERSION: 1.8.10
- RUBY VERSION: 1.9.2 (2011-07-09 patchlevel 290) [x86_64-darwin11.1.0]
- INSTALLATION DIRECTORY: /Users/user/.rvm/gems/ruby-1.9.2-p290@app
- RUBY EXECUTABLE: /Users/user/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
- EXECUTABLE DIRECTORY: /Users/user/.rvm/gems/ruby-1.9.2-p290@app/bin
- RUBYGEMS PLATFORMS:
  - ruby
  - x86_64-darwin-11
- GEM PATHS:
   - /Users/user/.rvm/gems/ruby-1.9.2-p290@app
   - /Users/user/.rvm/gems/ruby-1.9.2-p290@global
- GEM CONFIGURATION:
   - :update_sources => true
   - :verbose => true
   - :benchmark => false
   - :backtrace => false
   - :bulk_threshold => 1000
- REMOTE SOURCES:
   - http://rubygems.org/

Ich habe es endlich geschafft, eine Ursache / einen Weg zu finden, um diese Fehler auf meinem System zu verhindern. Ich kehre gerade zu Gurke und Gurkenschienen Version 1.0.2 zurück. Mit den neuesten Versionen wurde dies getan ...


0

Auch wenn Sie die neueste Version eines Edelsteins mit einem gültigen Datumsformat installieren, stellen Sie sicher, dass Sie sich gem cleanup GEMNAMEdanach gemüber die Spezifikationen für die älteren Bibliotheken beschweren.


0

Die Neuinstallation Ihrer Edelsteine ​​kann in vielen dieser leicht unterschiedlichen Maschinenzustände die Lösung sein.

In meinem Fall:

cd /Library/Ruby/Gems/1.8/specifications &&
sudo rm -rf *

In meinem Fall sind die anderen kreativeren Lösungen fehlgeschlagen.

Mein Problem wurde Invalid gemspecbeim Versuch, Cocoapods zu verwenden. Ich rannte gem install cocoapodswieder und alles war rosig.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.