Je reçois le message d'erreur suivant lorsque j'essaie d'utiliser des gemmes dans Windows, et j'ai également évoqué cet article stackoverflow et rubygems and Rails mis à jour. Mais rien ne pourrait 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.7.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" invalide gemspec in [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 invalide dans la spécification: "2011-09-01 00: 00: 0 0.000000000Z" Gemspec invalide dans [D: /RailsInstaller/Ruby1.7.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 in invalide [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/ spécifications /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.7.7/lib/Ruby/gems/1.8/specifications /Guard-livereload-0.3.1.gemspec]: format de date non valide dans 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" RubyGems Environment: - VERSION RUBYGEMS: 1.7.2 - Ruby VERSION: 1.8.7 (2011-06-30 patchlevel 352) [i386-mingw32] - INSTALLATION REPERTOIRE: D: /RailsInstaller/Ruby1.8.7/lib/Ruby/gems/1.8 - Ruby EXECUTABLE: D: /RailsInstaller/Ruby1.8.7/bin/Ruby.exe - RÉPERTOIRE EXÉCUTABLE: D: /RailsInstaller/Ruby1.8.7/bin - PLATEFORMES DE RUBYGEMS: - Ruby - x86-mingw32 - GEM PATHS: - D: /RailsInstaller/Ruby1.8.7/lib/Ruby/gems/1.8 - C:/Documents and Settings/jeygokul/.g em/Ruby/1.8 - CONFIGURATION GEM: -: update_sources => true -: verbose => true -: benchmark => false -: backtrace => false -: bulk_threshold => 1000 - SOURCES DISTANTES: - http://rubygems.org/
J'ai résolu ce problème par mise à niveau de ma RubyGems vers la version 1.8.1 avec
gem update --system
Edit: Vous pouvez également essayer (comme suggéré par ZeissS)
gem install rubygems-update
update_rubygems
La solution ultime est la suivante:
Recherchez les fichiers "spec" dans votre répertoire Ruby: * ) C:\Ruby187\lib\Ruby\gems\1.8\specifications *
Si un fichier gemspec contient quelque chose comme ceci: s.date =% q {2011-10-13 : 00: 00.000000000Z} Supprimez ensuite le : 00: 00.000000000Z = part: s.date =% q {2011-10-13}
Après avoir sauvegardé ces fichiers gemspec, le problème est résolu.
Aucune de ces solutions n'a fonctionné pour moi. Pour résoudre ce problème, j'ai supprimé tout le contenu du répertoire mentionné (some/path/to/specification /), puis j'ai installé les gems dont j'ai besoin (en fait, Bundler puis bundle install).
En plus de courir gem update --system
J'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.
Comme Michael l'a dit dans le commentaire:
gem pristine --all
Avait 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 ne fonctionnaient pas pour moi. gem env
a 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.
Emission gem update --system
_ vous avez édité l’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 à jour rubygems
vers 1.8.15 en émettant:
Sudo gem install rubygems-update && update_rubygems
Tout a fonctionné après ça, bonne chance! :)
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 type de problème est de naviguer dans le fichier .. par exemple.
Étape 1. cd /var/lib/gems/1.8/specifications
étape 2. ouvrir le fichier (chronic-0.6.4.gemspec) dans l'éditeur de votre choix ... (gedit chronic-0.6.4.gemspec)
étape 3. remplacez s.date =% q {2011-10-13 00: 00: 00.000000000Z} par s.date =% q {2011-10-13}
À votre santé :)
cd vendor/bundle/Ruby/1.9.x/specifications
sed -i 's/ 00\:00\:00.000000000Z//g' *
J'ai résolu le problème 'spécification de format de date non valide' 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" Vous pouvez également utiliser les autres fichiers.
J'ai trop de pierres précieuses pour réparer un par un et essayer les deux update_rubygems
et gem pristine --all
toujours pas de chance.
Donc j'utilise rvm clear gemset
pour supprimer toutes les gemmes avec une gemspec erronée. Execute bundle install
pour réinstaller toutes les gemmes et Viola!
Je viens d'avoir le même problème sur mon Ubuntu après la mise à niveau vers 10.10. Aucun de ce qui précède n'a fonctionné pour moi. Je devais installer le script update_rubygems de http://rubygems.org/pages/download et l'exécuter une fois. Afterwords tout a fonctionné.
Les différentes solutions notées dans ces réponses ne fonctionnaient pas pour moi. Ce qui a bien fonctionné a été de réinstaller les versions spécifiques de la gemme en cause. 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 zzz
ou gem pristine --all
_ pourrait ne pas sortir toujours (jamais?) vers les dépôts de pierres précieuses alors que gem install xxx -v v.r.m
Est-ce que.
Quoi qu'il en soit, réinstaller les versions incriminées des gemmes a fonctionné pour moi, même si c'était fastidieux ...
rvm gemset clear
et alors bundle install
a travaillé pour moi!
"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'aucune des solutions répertoriées précédemment ne fonctionne.
Résolu en exécutant gem update --system
puis gem update
.
Ce n'est pas vraiment une réponse, mais si quelqu'un a envie d'en creuser plus, j'ai trouvé cette spécification gemspec ici: http://rubygems.rubyforge.org/rubygems-update/Gem/Specification.html (défilez vers le bas pour date = date () et cliquez pour afficher le 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 gemspec, et il semble que le format de date contenu dans les fichiers qui montrent des erreurs ne soit pas conforme à cela.
Ce que j’ai fait, c’est de corriger manuellement les gemspecs incriminés comme suggéré ci-dessus (changer les dates en "aaaa-mm-jj", cela fonctionne pour moi.
Toutes les spécifications de rubygem que j'avais qui avaient ce problème ont aussi une ligne
s.rubygems_version =% q {1.3.5}
Donc, je suppose que ce ne sont que de vieilles pierres précieuses? Et avec quoi% q {...} de toute façon?
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.
Dans mon cas, les versions de gem référencées n'étaient même pas installées. J'ai eu ces gemmes, mais pas les versions qui sont gemspecs ont été à l'origine de l'erreur. Donc, je viens de supprimer chacun des fichiers /path/to/specifications/offending-X.Y.ZZ.gemspec.