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.