ruby on rails - rails - Especificación de formato de fecha inválida en gemspec
ruby on rails last version (18)
Recibo el siguiente error cuando trato de usar gemas en Windows, y también me referí a esta publicación de stackoverflow y rubygems y rieles actualizados. Pero nada podría resolver el problema.
El siguiente es el error completo,
D:/>gem env Invalid gemspec in [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications /tilt-1.3.3.gemspec]: invalid date format in specification: "2011-08-25 00:00:00 .000000000Z" Invalid gemspec in [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications /execjs-1.2.4.gemspec]: invalid date format in specification: "2011-08-03 00:00: 00.000000000Z" Invalid gemspec in [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications /temple-0.3.3.gemspec]: invalid date format in specification: "2011-08-26 00:00: 00.000000000Z" Invalid gemspec in [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications /guard-0.6.3.gemspec]: invalid date format in specification: "2011-09-01 00:00:0 0.000000000Z" Invalid gemspec in [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications /guard-livereload-0.3.1.gemspec]: invalid date format in specification: "2011-09 -01 00:00:00.000000000Z" Invalid gemspec in [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications /rack-cache-1.0.3.gemspec]: invalid date format in specification: "2011-08-27 00 :00:00.000000000Z" Invalid gemspec in [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications /tilt-1.3.3.gemspec]: invalid date format in specification: "2011-08-25 00:00:00 .000000000Z" Invalid gemspec in [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications /execjs-1.2.4.gemspec]: invalid date format in specification: "2011-08-03 00:00: 00.000000000Z" Invalid gemspec in [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications /temple-0.3.3.gemspec]: invalid date format in specification: "2011-08-26 00:00: 00.000000000Z" Invalid gemspec in [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications /guard-0.6.3.gemspec]: invalid date format in specification: "2011-09-01 00:00:0 0.000000000Z" Invalid gemspec in [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications /guard-livereload-0.3.1.gemspec]: invalid date format in specification: "2011-09 -01 00:00:00.000000000Z" Invalid gemspec in [D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications /rack-cache-1.0.3.gemspec]: invalid date format in specification: "2011-08-27 00 :00:00.000000000Z" RubyGems Environment: - RUBYGEMS VERSION: 1.7.2 - RUBY VERSION: 1.8.7 (2011-06-30 patchlevel 352) [i386-mingw32] - INSTALLATION DIRECTORY: D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8 - RUBY EXECUTABLE: D:/RailsInstaller/Ruby1.8.7/bin/ruby.exe - EXECUTABLE DIRECTORY: D:/RailsInstaller/Ruby1.8.7/bin - RUBYGEMS PLATFORMS: - ruby - x86-mingw32 - GEM PATHS: - D:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8 - C:/Documents and Settings/jeygokul/.gem/ruby/1.8 - GEM CONFIGURATION: - :update_sources => true - :verbose => true - :benchmark => false - :backtrace => false - :bulk_threshold => 1000 - REMOTE SOURCES: - http://rubygems.org/
"gem install rubygems-update", "update_rubygems", luego "gem pristine --all" es la combinación que resolvió el problema para mí después de que ninguno de los enumerados anteriormente funcionó.
Acabo de tener el mismo problema en mi ubuntu después de actualizar a 10.10. Ninguno de los anteriores funcionó para mí. Tuve que instalar el script update_rubygems desde http://rubygems.org/pages/download y ejecutarlo una vez. Afterwords todo funcionó.
Además de ejecutar gem update --system
, utilicé gem install <gem with bad gemspec>
en cada artículo gem env informado como malo. Esto limpió los errores en mi máquina.
Como dijo Michael en el comentario:
gem pristine --all
En mi caso, las versiones de gem referenciadas ni siquiera estaban instaladas. Tenía esas gemas, pero no las versiones cuyas gemspecs causaban el error. Entonces, simplemente eliminé cada uno de los archivos /path/to/specifications/offending-XYZZ.gemspec.
Esto no es realmente una respuesta, pero si alguien tiene ganas de excavar más encontré esta especificación gemspec aquí: http://rubygems.rubyforge.org/rubygems-update/Gem/Specification.html (desplácese hacia abajo hasta la fecha = fecha () y haga clic en para mostrar la fuente):
@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
Así que supongo que este es el código que analiza ese gemspec, y parece que el formato de fecha que están en los archivos que muestran errores no se ajustan a esto.
Lo que hice fue corregir manualmente las gemspecs ofensivas como se sugirió anteriormente (cambiando las fechas a "aaaa-mm-dd", me funciona).
Todas las especificaciones de rubygem que tuve que tenían este problema también tienen una línea
s.rubygems_version =% q {1.3.5}
¿Entonces supongo que estas son gemas antiguas? ¿Y qué pasa con esos% q {...} de todos modos?
Gemspec no válido en [/var/lib/gems/1.8/specifications/chronic-0.6.4.gemspec]: formato de fecha no válido en la especificación: "2011-09-09 00: 00: 00.000000000Z"
La solución simple para ese tipo de problema es navegar al archivo ... por ejemplo.
Paso 1. cd /var/lib/gems/1.8/specifications
paso 2. abrir el archivo (chronic-0.6.4.gemspec) en el editor de tu elección ... (gedit chronic-0.6.4.gemspec)
paso 3. cambiar la fecha =% q {2011-10-13 00: 00: 00.000000000Z} a la fecha =% q {2011-10-13}
Saludos :)
He solucionado este problema con la ''especificación de formato de fecha no válida'', cambiando la línea correspondiente en D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications/tilt-1.3.3.gemspec poniendo s.date = Time.now en lugar de s.date = "2011-08-25 00: 00: 00.000000000Z" Lo mismo se puede hacer con los otros archivos también.
La solución definitiva es esta:
Busque archivos "spec" en su directorio Ruby: * C: / Ruby187 / lib / ruby / gems / 1.8 / specifications *
Si un archivo gemspec contiene algo como esto: s.date =% q {2011-10-13 00: 00: 00.000000000Z } Luego borre 00: 00: 00.000000000Z parte: s.date =% q {2011-10- 13}
Después de guardar esos archivos gemspec, el problema está resuelto.
Las diversas soluciones observadas en estas respuestas no funcionaron para mí. Lo que funcionó fue volver a instalar las versiones específicas de las gemas ofensivas. En tu caso, eso se vería así:
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
Creo que la gem pristine xxx yyy zzz
o la gem pristine --all
no saldrá siempre (¿alguna vez?) A los repositorios de gem install xxx -v vrm
mientras que gem install xxx -v vrm
sí.
De todos modos, volver a instalar las versiones ofensivas de las gemas funcionó para mí, aunque fue tedioso ...
Ninguna de estas soluciones funcionó para mí. Para solucionarlo, eliminé todo el contenido del directorio mencionado (some / path / to / specification /) luego instalé las gemas que necesito (en realidad, Bundler luego paquete de instalación).
Se gem update --system
ejecutando la gem update --system
luego la gem update
.
Si tuviste este error en Ubuntu 11.04 mi solución fueron las siguientes líneas de comando:
$ sudo apt-get install ruby1.9.1
Después de hacer esto, no obtendrá el error de fecha.
Tengo demasiadas gemas para reparar una por una, y pruebo update_rubygems
y gem pristine --all
todavía sin suerte.
Así que utilizo rvm clear gemset
para eliminar todas las gemas con gemspec incorrecto. Ejecute la bundle install
para reinstalar todas las gemas, ¡y Viola!
Tuve el mismo problema al tratar de instalar un GEM en 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"
Las opciones anteriores no funcionaron para mí. gem env
informó lo siguiente:
RubyGems Environment:
- RUBYGEMS VERSION: 1.7.2
- RUBY VERSION: 1.8.7 (2011-06-30 patchlevel 352) [i686-linux]
Así que supuse que este problema se debía al hecho de que necesitaba una versión más nueva de RubyGems instalada.
Emitiendo la gem update --system
leilded la siguiente advertencia:
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.
Sin embargo, finalmente pude actualizar rubygems
a 1.8.15 emitiendo:
sudo gem install rubygems-update && update_rubygems
Todo funcionó después de eso, ¡buena suerte! :)
Solucioné este problema actualizando mis RubyGems a 1.8.10 con
gem update --system
Editar: También puedes probar (como lo sugiere ZeissS)
gem install rubygems-update
update_rubygems
rvm gemset clear
y luego bundle install
funcionó para mí!
cd vendor/bundle/ruby/1.9.x/specifications
sed -i ''s/ 00/:00/:00.000000000Z//g'' *