Spécification de format de date non valide dans gemspec


111

J'obtiens l'erreur suivante lorsque j'essaie d'utiliser des gemmes dans Windows, et j'ai également fait référence à ce post stackoverflow et à des rubygems et rails mis à jour. Mais rien ne pouvait résoudre le problème.

Ce qui suit est l'erreur complète,

    D: \> gem env
Gemspec non valide dans [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/tilt-1.3.3.gemspec]: format de date non valide dans la spécification: "2011-08-25 00:00:00
.000000000Z "
Gemspec non valide dans [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/execjs-1.2.4.gemspec]: format de date non valide dans la spécification: "2011-08-03 00:00:
00.000000000Z "
Gemspec non valide dans [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/temple-0.3.3.gemspec]: format de date non valide dans la spécification: "2011-08-26 00:00:
00.000000000Z "
Gemspec non valide dans [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/guard-0.6.3.gemspec]: format de date non valide dans la spécification: "2011-09-01 00: 00: 0
0.000000000Z "
Gemspec non valide dans [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/guard-livereload-0.3.1.gemspec]: format de date non valide dans la spécification: "2011-09
-01 00: 00: 00.000000000Z "
Gemspec non valide dans [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/rack-cache-1.0.3.gemspec]: format de date non valide dans la spécification: "2011-08-27 00
: 00: 00.000000000Z "
Gemspec non valide dans [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/tilt-1.3.3.gemspec]: format de date non valide dans la spécification: "2011-08-25 00:00:00
.000000000Z "
Gemspec non valide dans [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/execjs-1.2.4.gemspec]: format de date non valide dans la spécification: "2011-08-03 00:00:
00.000000000Z "
Gemspec non valide dans [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/temple-0.3.3.gemspec]: format de date non valide dans la spécification: "2011-08-26 00:00:
00.000000000Z "
Gemspec non valide dans [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/guard-0.6.3.gemspec]: format de date non valide dans la spécification: "2011-09-01 00: 00: 0
0.000000000Z "
Gemspec non valide dans [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/guard-livereload-0.3.1.gemspec]: format de date non valide dans la spécification: "2011-09
-01 00: 00: 00.000000000Z "
Gemspec non valide dans [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/rack-cache-1.0.3.gemspec]: format de date non valide dans la spécification: "2011-08-27 00
: 00: 00.000000000Z "
Environnement RubyGems:
  - VERSION RUBYGEMS: 1.7.2
  - VERSION RUBY: 1.8.7 (niveau de patch 352 du 30/06/2011) [i386-mingw32]
  - RÉPERTOIRE D'INSTALLATION: D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8
  - RUBY EXÉCUTABLE: D: /RailsInstaller/Ruby1.8.7/bin/ruby.exe
  - RÉPERTOIRE EXÉCUTABLE: D: /RailsInstaller/Ruby1.8.7/bin
  - PLATEFORMES RUBYGEMS:
    - rubis
    - x86-mingw32
  - CHEMINS GEM:
     - D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8
     - C: / Documents et paramètres / jeygokul / .gem / ruby ​​/ 1.8
  - CONFIGURATION GEM:
     -: update_sources => true
     -: verbeux => vrai
     -: benchmark => faux
     -: backtrace => faux
     -: bulk_threshold => 1000
  - SOURCES À DISTANCE:
     - http://rubygems.org/

Réponses:


45

J'ai résolu ce problème en mettant à niveau mes RubyGems vers la version 1.8.10 avec

gem update --system

Edit: Vous pouvez également essayer (comme suggéré par ZeissS)

gem install rubygems-update
update_rubygems

16
J'ai 1.8.10 et je reçois toujours ceci
DGM

3
Essayez d'exécuter "gem pristine [gemname]" pour les gemmes à l'origine de ces avertissements.
Michael le

2
Cela n'a pas fonctionné pour moi non plus - parce que la commande "gem update --system" a causé exactement le même problème et "gem pristine" n'a rien fait. J'ai dû suivre la solution de @ Romain_Tribes et supprimer les fichiers gemspec à la main avant de relancer une mise à jour de gem
Taryn East

4
Ce n'est pas une très bonne option sur ubuntu, en particulier pour les utilisateurs occasionnels de ruby.
Phillip Whelan

2
La réponse de GaborKomaromi ci-dessous (ou l'une des découvertes .. dans les commentaires) fonctionne. Celui-ci ne le fait pas.
gotofritz

132

La solution ultime est la suivante:

Recherchez les fichiers "spec" dans votre répertoire Ruby: * C: \ Ruby187 \ lib \ ruby ​​\ gems \ 1.8 \ specs *

Si un fichier gemspec contient quelque chose comme ceci: s.date =% q {2011-10-13 00: 00: 00.000000000Z } Puis supprimez la partie 00: 00: 00.000000000Z : s.date =% q {2011-10- 13}

Après avoir enregistré ces fichiers gemspec, le problème est résolu.


2
Cela a fonctionné pour moi (ruby 1.8.7 / win7), les autres solutions n'ont pas fonctionné
Felix Alcala

3
A travaillé comme un charme sur Ubuntu avec ruby ​​1.8.7, gem 1.7.2. Merci!
Dan

9
Cela supprimera la chaîne du fichier de spécification: "find. -Type f | xargs perl -pi -e 's / 00: 00: 00 \ .000000000Z //'"
Rainer Blessing

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

4
sed -i 's/ 00:00:00.000000000Z//g' path_to_gemspecs
Pedro Rolo

46

Aucune de ces solutions n'a fonctionné pour moi. Pour y remédier, j'ai supprimé tout le contenu du répertoire mentionné (certains / chemin / vers / spécification /) puis j'ai installé les gemmes dont j'ai besoin (en fait, Bundler puis bundle install).


C'est simple, rapide et efficace. Essayez ceci avant les autres.
Tim Scollick

1
Seule solution qui a fonctionné pour moi aussi. Mais je ne sais pas si c'est la bonne solution.
Suren

Cela a fonctionné pour moi. Il exécutait gem udpate --system qui m'a amené à ce problème!
Dave Isaacs

12

En plus de courir, gem update --systemj'ai utilisé gem install <gem with bad gemspec>sur chacun des objets gem env signalés comme mauvais. Cela a nettoyé les erreurs sur ma machine.


5
Vous pouvez réinstaller avec "gem pristine [gemname]" ou faire un "gem pristine --all" pour réinstaller les gemmes du cache sans les télécharger à nouveau.
Michael le

10

Comme Michael l'a dit dans le commentaire:

gem pristine --all

6

J'ai eu le même problème en essayant d'installer un GEM sur Ubuntu 11.10.

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"

Les options ci-dessus n'ont pas fonctionné pour moi. gem enva rapporté ce qui suit:

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

J'ai donc supposé que ce problème était dû au fait que j'avais besoin d'une version plus récente de RubyGems installée.

L'émission de gem update --systeml'avertissement suivant:

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.

Cependant, j'ai finalement pu mettre rubygemsà jour vers la 1.8.15 en émettant:

sudo gem install rubygems-update && update_rubygems

Tout a fonctionné après ça, bonne chance! :)


Pour moi sur Ubuntu, il a fallu sudo apt-get purge rubygemssuivre sudo apt-get install rubygems, puis réinstaller tous les joyaux. Gênant, mais au moins cela a fonctionné: P (ce qui précède n'a pas fonctionné pour moi)
Jeff Tratner

3

Gemspec non valide dans [/var/lib/gems/1.8/specifications/chronic-0.6.4.gemspec]: format de date non valide dans la spécification: "2011-09-09 00: 00: 00.000000000Z"

La solution simple à ce genre de problème est de naviguer vers le fichier .. par exemple.

Étape 1. cd /var/lib/gems/1.8/specifications
étape 2. ouvrez le fichier (chronic-0.6.4.gemspec) dans l'éditeur de votre choix ... (gedit chronic-0.6.4.gemspec)
étape 3. changer le s.date =% q {2011-10-13 00: 00: 00.000000000Z} en s.date =% q {2011-10-13}

À votre santé :)


2

J'ai juste eu le même problème sur mon ubuntu après la mise à niveau vers 10.10. Aucun de ces éléments n'a fonctionné pour moi. J'ai dû installer le script update_rubygems de http://rubygems.org/pages/download et l'exécuter une fois. Après tout, tout a fonctionné.


2

J'ai résolu ce problème 'spécification de format de date invalide' en modifiant la ligne correspondante dans D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications/tilt-1.3.3.gemspec en mettant s.date = Time.now au lieu de s.date = "2011-08-25 00: 00: 00.000000000Z" La même chose peut être utilisée avec les autres fichiers.


2

J'ai trop de gemmes pour les réparer une par une, et j'essaye les deux update_rubygemset gem pristine --alltoujours pas de chance.

J'utilise donc rvm clear gemsetpour supprimer toutes les gemmes avec un gemspec incorrect. Exécutez bundle installpour réinstaller toutes les gemmes, et Viola!


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' *

1

Résolu en exécutant gem update --systemalors gem update.


a fonctionné pour moi, je viens de recevoir cette erreur après avoir fait la mise à jour de gem --system, la plupart d'entre eux sont partis après la mise à jour de gem. pour d'autres, j'ai supprimé le fichier gemspec.
mrbrdo

1

Les différentes solutions mentionnées dans ces réponses n'ont pas fonctionné pour moi. Ce qui a fonctionné a été de réinstaller les versions spécifiques des gemmes incriminées. Dans votre cas, cela ressemblerait à:

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

Je pense que gem pristine xxx yyy zzzou gem pristine --allpeut-être pas toujours (jamais?) Vers les référentiels de gemmes, alors que c'est le gem install xxx -v v.r.mcas.

Quoi qu'il en soit, réinstaller les versions incriminées des gemmes a fonctionné pour moi, même si c'était fastidieux ...


1

rvm gemset clearet ensuite bundle installtravaillé pour moi!


1

"gem install rubygems-update", "update_rubygems", puis "gem pristine --all" est la combinaison qui a résolu le problème pour moi après qu'aucun des précédents n'a fonctionné.


0

Dans mon cas, les versions de gemmes référencées n'étaient même pas installées. J'avais ces gemmes, mais pas les versions qui étaient à l'origine de l'erreur. Donc, je viens de supprimer chacun des fichiers /path/to/specifications/offending-XYZZ.gemspec.


0

Ce n'est pas vraiment une réponse mais si quelqu'un a envie de creuser plus, j'ai trouvé cette spécification gemspec ici: http://rubygems.rubyforge.org/rubygems-update/Gem/Specification.html ( faites défiler jusqu'à date = date () et cliquez pour afficher la source):

@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

Donc, je suppose que c'est le code qui analyse ce gemspec, et il ressemble juste au format de date qui se trouve dans les fichiers qui montrent des erreurs ne sont pas conformes à cela.

Ce que j'ai fait était de corriger manuellement ces gemspecs incriminés comme suggéré ci-dessus (en changeant les dates en "aaaa-mm-jj", cela fonctionne pour moi.

Toutes les spécifications rubygem que j'avais qui avaient ce problème ont également une ligne

s.rubygems_version =% q {1.3.5}

Donc je suppose que ce ne sont que de vieilles pierres précieuses? Et c'est quoi ces% q {...} de toute façon?


0

Si vous aviez cette erreur sur Ubuntu 11.04, ma solution était les lignes de commande suivantes:

$ sudo apt-get install ruby1.9.1

Après cela, vous n'obtiendrez pas l'erreur de date.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.