Gemspec non valido a causa del formato della data nelle specifiche


89

Quando includo una gemma che ho creato, grazie a Bundler (versione 1.0.12), in un Gemfile e poi provo a raggruppare o rake proprio così:

$ rake

Ho questo messaggio di errore:

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"

Sono sull'ultimo Mac OS X (10.6.4), con:

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

e:

$ 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

Non vedo davvero come risolvere questo problema. Grazie per tutte le idee.


Ricevo costantemente questi errori adesso !!! Come hai risolto? Finora due risposte non sono state utili ...
Meltemi

Quello suggerito da tutti è un file di sola lettura. Come posso cambiarlo?
chhantyal

Risposte:


143

Ecco il modo in cui correggo l'errore "formato data non valido nelle specifiche":

1.) Vai alla cartella delle specifiche situata in:

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

2.) Trova la specifica che causa il problema.

3.) Cambia s.date = %q{2011-05-21 00:00:00.000000000Z}ins.date = %q{2011-05-21}

Questa è una VITTORIA per me! In bocca al lupo


Ha funzionato a meraviglia, questo mi stava facendo impazzire!
David Archer

Ha funzionato per me! Ero su Windows XP con Ruby 1.8 installato. Em.websocket-0.3.2.gemspec mi ha generato questo errore quando cercavo di utilizzare "livereload" ( livereload.com ).
programma 247365

Ha funzionato anche per me, su Linux su
Cronic

Risolve il problema per una gemma, ma le seguenti gemme installate potrebbero causare nuovamente questo errore.
MickaelFM

2
questo mi sta facendo impazzire ... dovrei cambiare la gemspec di 50 gemme di terze parti? perchè non hanno aggiornato le gemspecs, è passato un anno ..
oma

60

Ecco il comando per risolvere questo problema per tutte le tue gemme:

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

Si converte s.date = %q{2011-05-21 00:00:00.000000000Z}in s.date = %q{2011-05-21}e dovrebbe risolvere il tuo problema.


Bel trucco per fare un rapido backup prima di farlo:git init . && git commit -am "backup
troyt

Perché provare a cambiare il formato della data, dice che non ho il permesso di farlo. Cosa fare?
chhantyal

@chhantyal Allora devi eseguirlo come sudo. Grazie mille per questo! Mi ha fatto risparmiare così tanto tempo.
Matt McClure

21

Si prega di notare il commento di Damian Nowak. Questi comandi potrebbero rovinare i tuoi rubygems!

Su Ubuntu 11.10 il seguente ha risolto questo errore:

sudo gem install rubygems-update
sudo update_rubygems     

Quanto segue potrebbe funzionare su alcuni sistemi ma non su quelli basati su Debian:

sudo gem update --system

Ottimo, funziona anche con la versione finale di Oneiric. Ma questo sembra pulire tutte le gemme installate manualmente.
zehrer

1
Non usarlo. Ha incasinato le mie gemme di rubino. Ho dovuto rm -rf un sacco di cose e tornare ai rubygem originali dal repository. Installa rubygems totalmente manualmente o usa un rubygems fornito da Ubuntu. In alternativa, puoi cercare gli attuali rubygem nel PPA. (Vorrei poter annullare il mio +1 che è stato fatto circa un mese fa)
Nowaker,

1
@DamianNowak Mi dispiace sentire questo. Ho aggiunto un avvertimento alla risposta!
Mark

14

Puoi aggiornare il tuo gem. Per risolvere questo problema, puoi modificare il gemspecfile direttamente da

2011-04-21 00:00:00.000000000Z

per

YYYY-MM-DD

Oppure aggiorna anche i tuoi binari

sudo gem update rails

Risolverà il problema.


@ Meltemi sarà nella specificationsdirectory questo è il specificationspercorso della mia directory -/home/sayuj/.rvm/gems/ruby-1.9.2-p180/specifications/
Sayuj

+1 per l'aggiornamento dei binari: risolve il problema, anche se all'inizio lancia gli stessi avvisi, si installa correttamente e il problema non si verifica più.
Adam Davis

6

Non specificare l'ora ... solo la data. 2011-04-21dovrebbe funzionare bene.


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 ..

Grazie per la tua risposta. Sono d'accordo con te, ma non ho utilizzato alcuna data o datetime nel file myplugin.gemspec. La gemma è stata generata automaticamente da Bundler. Penso che questo problema potrebbe essere dovuto a Bundler o RVM ... È strano.
Zag zag ..

4

Ha avuto lo stesso problema. Sembra un insetto in rubygems. Ecco il commit che lo ha risolto: https://github.com/rubygems/rubygems/commit/21cccd55b823848c5e941093a615b0fdd6cd8bc7

Devi aggiornare rubygems e bundler alle ultime versioni. Se continui a riscontrare problemi, potrebbe essere necessario rimuovere e quindi reinstallare tutte le gemme che ti danno problemi.


Bene, tranne che Redmine utilizza la propria versione 2.3.11 di Rails, Rails 2.3.11 fallisce con RubyGems> = 1.7.0 e il commit che hai menzionato è datato 19 maggio 2011, che è post-1.7.0 (1 aprile 2011). Immagino che in tal caso sia necessario modificare i file delle specifiche.
Olivier 'Ölbaum' Scherler

3

Questo è più un commento alla risposta di Ben Hall, ma a quanto pare non ho ancora quel privilegio

gli aggiornamenti della gemma non sembrano funzionare, penso che non possa nemmeno caricare la gemma a causa del formato della data errato. cambiare manualmente le date era troppo frustrante per andare una per una, quindi un grep:

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

E per sed:

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

E a tuo rischio e pericolo !! Sono ancora un principiante, ma ha funzionato per me;)


2

Sul mio server slicehost la cartella delle specifiche si trovava in un punto diverso. Ecco il percorso:

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

L'errore fornito dovrebbe fornire il percorso alla cartella delle specifiche.


2

L'approccio del fucile: disinstalla tutte le gemme e riesegui il bundler.

  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

Se usi un .rvmrcfile, fai attenzione a eseguire la riga 2 perché gemdir potrebbe produrre output extra.
Jared Beck

1

(Fino a quando la correzione del bug non arriva a una versione stabile di Rubygems) L'ho risolto reinstallando la stessa versione di tutte le gem che generano avvisi utilizzando l'opzione --version del comando gem.


1

Come ha detto Ben Hall, è necessario correggere il file gemspec che potrebbe cambiare da sistema a sistema. Per sapere quale file è vedere quale file è indicato nel rapporto di errore, ad esempio:

Gemspec non valido in [/var/lib/gems/1.8/specifications/svn2git-2.1.2.gemspec]: formato data non valido nella specifica: "2011-12-28 00: 00: 00.000000000Z"

In questo esempio è necessario modificare il file "/var/lib/gems/1.8/specifications/svn2git-2.1.2.gemspec" e modificare "2011-12-28 00: 00: 00.000000000Z" per "2011-12-28" nell'opzione data.


1

Avevo ancora questo problema adesso. L'aggiornamento di Rubygems lo ha risolto bene:

gem update --system

0

Questo è il mio ambiente:

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/

Alla fine sono riuscito a trovare una causa / un modo per prevenire questi errori sul mio sistema. Sono appena tornato alla versione 1.0.2 di cetriolo e cetriolo. Usare le ultime versioni stava facendo questo ...


0

Anche se installi l'ultima versione di una gemma con un formato di data valido, assicurati di farlo in gem cleanup GEMNAMEseguito, poiché gemcontinuerai a lamentarti delle specifiche per le librerie più vecchie.


0

Reinstallare le tue gemme può essere la soluzione in molti di questi stati macchina leggermente diversi.

Nel mio caso:

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

Nel mio caso, le altre soluzioni più creative sono fallite.

Il mio problema era Invalid gemspecquando cercavo di usare cocoapods. Ho corso di gem install cocoapodsnuovo e tutto era roseo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.