web-dev-qa-db-fra.com

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

Lorsque j'inclus un bijou que j'ai fait, grâce à Bundler (version 1.0.12), dans un Gemfile, puis j'essaie de regrouper ou de ratisser 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.

89
Zag zag..

Voici la façon dont je corrige l'erreur "format de date non valide dans les spécifications":

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

/usr/local/lib/Ruby/gems/1.8/specifications/

2.) Recherchez la spécification à l'origine du problème.

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

C'est un GAGNANT pour moi! Bonne chance

143
ben hall

Voici la commande pour corriger cela 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} à s.date = %q{2011-05-21} et devrait résoudre votre problème.

60
Philippe Creux

Veuillez noter le commentaire de Damian Nowak. Ces commandes peuvent gâcher vos rubygèmes!

Sur Ubuntu 11.10, les éléments suivants ont résolu cette erreur:

Sudo gem install rubygems-update
Sudo update_rubygems     

Les éléments suivants peuvent fonctionner sur certains systèmes mais pas sur Debian:

Sudo gem update --system
21
Mark

Vous pouvez mettre à jour 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 mettez à niveau votre Rails également

Sudo gem update Rails

Cela résoudra le problème.

14
Sayuj

Ne spécifiez pas l'heure ... juste la date. 2011-04-21 devrait fonctionner correctement.

6
qrush

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 toutes les gemmes qui vous posent des problèmes.

4
spd

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

les mises à jour de gemmes ne semblaient pas fonctionner, je pense qu'il ne peut même pas charger la gemme en raison du mauvais format de date. changer les dates manuellement é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 débutant sed, mais cela a fonctionné pour moi;)

3
pdelanauze

Sur mon serveur slicehost, le dossier des spécifications se trouvait à un endroit différent. Voici le chemin:

/usr/lib/Ruby/gems/1.8/specifications

L'erreur fournie devrait donner le chemin d'accès au dossier de spécifications.

2
ben hall

L'approche du fusil de chasse: Désinstaller toutes les gemmes et relancer 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
2
Jared Beck

Comme l'a dit Ben Hall, vous devez corriger le fichier gemspec qui peut changer d'un système à l'autre. Pour savoir quel fichier est voir quel fichier est dit dans le rapport d'erreur, par exemple:

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

Dans cet exemple, vous devez modifier 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.

1
PhoneixS

Avait encore ce problème maintenant. La mise à jour de Rubygems l'a résolu très bien:

gem update --system
1
polarblau

(Jusqu'à ce que le correctif de bogue entre dans une version stable de Rubygems) Je l'ai résolu en réinstallant la même version de toutes les gemmes générant des avertissements en utilisant le commutateur --version de la commande gem.

1
Pistos

Même si vous installez la dernière version d'une gemme avec un format de date valide, assurez-vous de gem cleanup GEMNAME après, puisque gem se plaindra toujours des spécifications des anciennes bibliothèques.

0
Daniel Tsadok

La réinstallation de vos gemmes peut être la solution dans plusieurs 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 devenait Invalid gemspec lorsque vous essayez d'utiliser des cocoapodes. Iran gem install cocoapods encore et tout était rose.

0
james_womack

Voici 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'éviter ces erreurs sur mon système. Je reviens juste à la version 1.0.2 de concombre et de concombre-Rails. Utiliser les dernières versions faisait cela ...

0
rchampourlier