Gemspec invalide en raison du format de date dans la spécification

Quand j’inclus un bijou que j’ai fait, grâce à Bundler (version 1.0.12), dans un Gemfile et puis j’essaye de grouper ou de rake comme ça:

$ rake

J’ai ce message d’erreur:

 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" 

Je suis sur le dernier Mac OS X (10.6.4), avec:

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

et:

 $ 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 

Je ne vois vraiment pas comment résoudre ce problème. Merci pour toutes les idées.

Voici comment je corrige l’erreur “format de date non valide dans la spécification”:

1.) Accédez au dossier de spécifications situé à:

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

2.) Trouvez la spécification à l’origine du problème.

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

C’est une victoire pour moi! Bonne chance

Voici la commande pour résoudre ce problème pour toutes vos gemmes:

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

Il convertit s.date = %q{2011-05-21 00:00:00.000000000Z} en s.date = %q{2011-05-21} et devrait résoudre votre problème.

Veuillez noter le commentaire de Damian Nowak. Ces commandes peuvent éventuellement gâcher vos rubygems!

Sur Ubuntu 11.10, les erreurs suivantes ont été résolues:

 sudo gem install rubygems-update sudo update_rubygems 

Ce qui suit peut fonctionner sur certains systèmes mais pas sur Debian:

 sudo gem update --system 

Vous pouvez améliorer votre gem . Pour résoudre ce problème, vous pouvez modifier le fichier gemspec directement – à partir de

 2011-04-21 00:00:00.000000000Z 

à

 YYYY-MM-DD 

Ou améliorez vos rails aussi

 sudo gem update rails 

Il va résoudre le problème.

Ne spécifiez pas l’heure … juste la date. 2011-04-21 devrait bien fonctionner.

Eu le même problème. Cela ressemble à un bug dans rubygems. Voici le commit qui l’a corrigé: https://github.com/rubygems/rubygems/commit/21cccd55b823848c5e941093a615b0fdd6cd8bc7

Vous devez mettre à jour rubygems et bundler vers les dernières versions. Si vous rencontrez toujours des problèmes après cela, vous devrez peut-être supprimer puis réinstaller les gemmes qui vous posent des problèmes.

Ceci est plus un commentaire à la réponse de Ben Hall, mais je n’ai pas ce privilège pourtant il semble

Les mises à jour de gem ne semblaient pas fonctionner, je pense qu’elle ne peut même pas charger la gemme à cause du mauvais format de date. changer manuellement les dates était trop frustrant pour aller un par un, donc un grep:

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

Et pour sed:

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

Et à vos risques et périls !! Je suis toujours un novice sed, mais cela a fonctionné pour moi;)

Sur mon serveur slicehost, le dossier de spécifications se trouvait à un autre endroit. Voici le chemin:

/usr/lib/ruby/gem/1.8/specifications

L’erreur fournie doit donner le chemin d’access au dossier de spécifications.

L’approche de fusil de chasse: Désinstallez tous les gems et réexécutez le 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

(Jusqu’à ce que le correctif parvienne à une version stable de Rubygems), je l’ai résolu en réinstallant la même version de tous les gems générateurs d’avertissement en utilisant le commutateur –version de la commande gem.

Comme Ben Hall l’a dit, vous devez corriger le fichier gemspec qui peut changer pour le système en système. Pour savoir quel fichier voir quel fichier est indiqué dans le rapport d’erreur, par exemple:

Gemspec invalide dans [/var/lib/gems/1.8/specifications/svn2git-2.1.2.gemspec]: format de date invalide dans la spécification: “2011-12-28 00: 00: 00.000000000Z”

Dans cet exemple, vous devez éditer le fichier “/var/lib/gems/1.8/specifications/svn2git-2.1.2.gemspec” et modifier “2011-12-28 00: 00: 00.000000000Z” pour “2011-12-28” dans l’option s.date.

Avait ce problème encore maintenant. Mettre à jour Rubygems a résolu le problème:

 gem update --system 

Ceci est mon environnement:

 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/ 

J’ai finalement réussi à trouver une cause / un moyen d’empêcher ces erreurs sur mon système. Je reviens à la version 1.0.2 du concombre et des concombres-rails. En utilisant les dernières versions faisait cela …

Même si vous installez la dernière version d’un joyau avec un format de date valide, assurez-vous de gem cleanup GEMNAME par la suite, car gem continuera à se plaindre des spécifications des anciennes bibliothèques.

La réinstallation de vos gemmes peut être la solution dans bon nombre de ces états de machine légèrement différents.

Dans mon cas:

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

Dans mon cas, les autres solutions plus créatives ont échoué.

Mon problème était d’obtenir Invalid gemspec en essayant d’utiliser des cocoapods. J’ai couru encore gem install cocoapods fois gem install cocoapods et tout était rose.