Especificación de formato de fecha no válida en gemspec

111

Recibo el siguiente error cuando intento usar gemas en Windows, y también me referí a esta publicación de stackoverflow y actualicé rubygems y rieles. Pero nada pudo solucionar el problema.

El siguiente es el error completo,

    D: \> gema env
Gemspec no válida en [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/tilt-1.3.3.gemspec]: formato de fecha no válido en la especificación: "2011-08-25 00:00:00
.000000000Z "
Gemspec no válida en [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/execjs-1.2.4.gemspec]: formato de fecha no válido en la especificación: "2011-08-03 00:00:
00.000000000Z "
Gemspec no válida en [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/temple-0.3.3.gemspec]: formato de fecha no válido en la especificación: "2011-08-26 00:00:
00.000000000Z "
Gemspec no válida en [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/guard-0.6.3.gemspec]: formato de fecha no válido en la especificación: "2011-09-01 00: 00: 0
0,000000000Z "
Gemspec no válida en [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/guard-livereload-0.3.1.gemspec]: formato de fecha no válido en la especificación: "2011-09
-01 00: 00: 00.000000000Z "
Gemspec no válida en [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/rack-cache-1.0.3.gemspec]: formato de fecha no válido en la especificación: "2011-08-27 00
: 00: 00.000000000Z "
Gemspec no válida en [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/tilt-1.3.3.gemspec]: formato de fecha no válido en la especificación: "2011-08-25 00:00:00
.000000000Z "
Gemspec no válida en [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/execjs-1.2.4.gemspec]: formato de fecha no válido en la especificación: "2011-08-03 00:00:
00.000000000Z "
Gemspec no válida en [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/temple-0.3.3.gemspec]: formato de fecha no válido en la especificación: "2011-08-26 00:00:
00.000000000Z "
Gemspec no válida en [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/guard-0.6.3.gemspec]: formato de fecha no válido en la especificación: "2011-09-01 00: 00: 0
0,000000000Z "
Gemspec no válida en [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/guard-livereload-0.3.1.gemspec]: formato de fecha no válido en la especificación: "2011-09
-01 00: 00: 00.000000000Z "
Gemspec no válida en [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/rack-cache-1.0.3.gemspec]: formato de fecha no válido en la especificación: "2011-08-27 00
: 00: 00.000000000Z "
Entorno RubyGems:
  - VERSIÓN RUBYGEMS: 1.7.2
  - VERSIÓN RUBY: 1.8.7 (nivel de parche 352 del 30-06-2011) [i386-mingw32]
  - DIRECTORIO DE INSTALACIÓN: D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8
  - RUBY EJECUTABLE: D: /RailsInstaller/Ruby1.8.7/bin/ruby.exe
  - DIRECTORIO EJECUTABLE: D: /RailsInstaller/Ruby1.8.7/bin
  - PLATAFORMAS RUBYGEMS:
    - rubí
    - x86-mingw32
  - CAMINOS DE GEM:
     - D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8
     - C: / Documentos y configuración / jeygokul / .gem / ruby ​​/ 1.8
  - CONFIGURACIÓN DE GEM:
     -: update_sources => verdadero
     -: detallado => verdadero
     -: benchmark => falso
     -: backtrace => falso
     -: bulk_threshold => 1000
  - FUENTES REMOTAS:
     - http://rubygems.org/
Abhishek
fuente

Respuestas:

45

He solucionado este problema actualizando mi RubyGems a 1.8.10 con

gem update --system

Editar: también puede probar (como lo sugiere ZeissS)

gem install rubygems-update
update_rubygems
Miguel
fuente
16
Tengo 1.8.10 y sigo recibiendo esto
DGM
3
Intente ejecutar "gem pristine [gemname]" para las gemas que están causando esas advertencias.
Michael
2
Esto tampoco funcionó para mí, porque el comando "gem update --system" causó exactamente el mismo problema y "gem pristine" no hizo nada. Tuve que seguir la solución de @ Romain_Tribes y eliminar los archivos gemspec a mano antes de volver a ejecutar una actualización de gemas
Taryn East
4
Esta no es una muy buena opción en ubuntu, especialmente para usuarios ocasionales de ruby.
Phillip Whelan
2
La respuesta de GaborKomaromi a continuación (o uno de los hallazgos ... en los comentarios) funciona. Este no lo hace.
gotofritz
132

La solución definitiva es esta:

Busque archivos "spec" en su directorio Ruby: * C: \ Ruby187 \ lib \ ruby ​​\ gems \ 1.8 \ especificaciones *

Si un archivo gemspec contiene algo como esto: s.date =% q {2011-10-13 00: 00: 00.000000000Z } Luego elimine la parte 00: 00: 00.000000000Z : s.date =% q {2011-10- 13}

Después de guardar esos archivos gemspec, el problema está resuelto.

GaborKomaromi
fuente
2
Esto funcionó para mí (ruby 1.8.7 / win7), las otras soluciones no funcionaron
Felix Alcala
3
Funcionó como un encanto en ubuntu con ruby ​​1.8.7, gem 1.7.2. ¡Gracias!
Dan
9
Esto eliminará la cadena del archivo de especificación: "find. -Type f | xargs perl -pi -e 's / 00: 00: 00 \ .000000000Z //'"
Rainer Blessing
17
buscar /var/lib/gems/1.8/specifications -name * .gemspec -type f | xargs perl -pi -e 's / 00: 00: 00 \ .000000000Z //' en Ubuntu
kubek2k
4
sed -i 's/ 00:00:00.000000000Z//g' path_to_gemspecs
Pedro Rolo
46

Ninguna de estas soluciones funcionó para mí. Para solucionarlo, eliminé todo el contenido del directorio mencionado (algunos / ruta / a / especificación /) y luego instalé las gemas que necesito (en realidad, Bundler y luego paquete de instalación).

Tribus Romain
fuente
Esto es simple, rápido y efectivo. Intente esto antes que cualquiera de los demás.
Tim Scollick
1
La única solución que funcionó para mí también. Pero no estoy seguro de si esta es la solución correcta.
Suren
Esto funcionó para mí. ¡Estaba ejecutando gem udpate, el sistema que me llevó a este problema!
Dave Isaacs
12

Además de ejecutar gem update --system, utilicé gem install <gem with bad gemspec>en cada uno de los elementos que gem env reportó como malos. Esto limpió los errores en mi máquina.

TheArtTrooper
fuente
5
Puede reinstalar con "gem pristine [gemname]" o hacer un "gem pristine --todo" para reinstalar las gemas del caché sin tener que volver a descargarlas.
Michael
10

Como dijo Michael en el comentario:

gem pristine --all
wingfire
fuente
6

Tuve el mismo problema al intentar 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 me funcionaron. gem envinformó 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 gem update --systemla 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 rubygemsa 1.8.15 emitiendo:

sudo gem install rubygems-update && update_rubygems

Todo funcionó después de eso, ¡buena suerte! :)

JonnyReeves
fuente
Para mí en Ubuntu, tomó sudo apt-get purge rubygemsseguido sudo apt-get install rubygemsy luego instalar todas las gemas nuevamente. Incómodo, pero al menos funcionó: P (lo anterior no funcionó para mí)
Jeff Tratner
3

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 este tipo de problema es navegar hasta el archivo ... por ejemplo.

Paso 1. cd /var/lib/gems/1.8/specifications
paso 2. abra el archivo (Chronic-0.6.4.gemspec) en el editor de su elección ... (gedit Chronic-0.6.4.gemspec)
Paso 3. cambie s.date =% q {2011-10-13 00: 00: 00.000000000Z} a s.date =% q {2011-10-13}

Salud :)

Fanático
fuente
2

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 de http://rubygems.org/pages/download y ejecutarlo una vez. Después, todo funcionó.

ZeissS
fuente
2

He solucionado este problema '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 utilizar con los otros archivos también.

sanitha
fuente
2

Tengo demasiadas gemas para arreglar una por una, y pruebo ambas update_rubygemsy gem pristine --alltodavía no tengo suerte.

Entonces uso rvm clear gemsetpara eliminar todas las gemas con gemspec incorrecto. Ejecuta bundle installpara reinstalar todas las gemas, ¡y Viola!

taiansu
fuente
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' *
Anno2001
fuente
1

Resuelto corriendo gem update --systementonces gem update.

David Walsh
fuente
funcionó para mí, acabo de recibir ese error después de hacer la actualización de gemas: el sistema, la mayoría de ellos desaparecieron después de la actualización de gemas. para otros, eliminé el archivo gemspec.
mrbrdo
1

Las diversas soluciones señaladas en estas respuestas no funcionaron para mí. Lo que funcionó fue reinstalar las versiones específicas de las gemas ofensivas. En su caso, 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 gem pristine xxx yyy zzzo gem pristine --allno siempre (¿alguna vez?) A los repositorios de gemas, mientras que gem install xxx -v v.r.msí.

De todos modos, volver a instalar las versiones ofensivas de las gemas funcionó para mí, aunque fue tedioso ...

Chris Markle
fuente
1

rvm gemset cleary luego bundle installtrabajó para mí!

Vibhuti
fuente
1

"gem install rubygems-update", "update_rubygems", luego "gem pristine --all" es la combinación que me resolvió el problema después de que ninguno de los enumerados anteriormente funcionó.

Brian Knoblauch
fuente
0

En mi caso, las versiones de gemas a las que se hace referencia ni siquiera estaban instaladas. Tenía esas gemas, pero no las versiones cuyas gemspecs estaban causando el error. Entonces, acabo de eliminar cada uno de los archivos /path/to/specifications/offending-XYZZ.gemspec.

Jon Garvin
fuente
0

Esto no es realmente una respuesta, pero si alguien tiene ganas de investigar más, encontré esta especificación de gemspec aquí: http://rubygems.rubyforge.org/rubygems-update/Gem/Specification.html (desplácese hacia abajo hasta la fecha = fecha () y haga clic 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á en los archivos que muestran errores no se ajusta a esto.

Lo que hice fue arreglar manualmente esas gemspecs ofensivas como se sugirió anteriormente (cambiando las fechas a "aaaa-mm-dd", funciona para mí.

Todas las especificaciones de rubygem que tenía que tenían este problema también tienen una línea

s.rubygems_version =% q {1.3.5}

¿Entonces supongo que estas son solo joyas antiguas? ¿Y qué pasa con esos% q {...} de todos modos?

PapaFreud
fuente
0

Si tuvo 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.

mazyZed
fuente