Especificação de formato de data inválida em gemspec


111

Estou recebendo o seguinte erro quando tento usar gems no windows, e também me referi a esta postagem stackoverflow e atualizei rubygems and rails. Mas nada poderia resolver o problema.

A seguir está o erro completo,

    D: \> env gem
Gemspec inválido em [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/tilt-1.3.3.gemspec]: formato de data inválido na especificação: "2011-08-25 00:00:00
.000000000Z "
Gemspec inválido em [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/execjs-1.2.4.gemspec]: formato de data inválido na especificação: "2011-08-03 00:00:
00.000000000Z "
Gemspec inválido em [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/temple-0.3.3.gemspec]: formato de data inválido na especificação: "2011-08-26 00:00:
00.000000000Z "
Gemspec inválido em [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/guard-0.6.3.gemspec]: formato de data inválido na especificação: "2011-09-01 00: 00: 0
0,000000000Z "
Gemspec inválido em [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/guard-livereload-0.3.1.gemspec]: formato de data inválido na especificação: "2011-09
-01 00: 00: 00.000000000Z "
Gemspec inválido em [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/rack-cache-1.0.3.gemspec]: formato de data inválido na especificação: "2011-08-27 00
: 00: 00.000000000Z "
Gemspec inválido em [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/tilt-1.3.3.gemspec]: formato de data inválido na especificação: "2011-08-25 00:00:00
.000000000Z "
Gemspec inválido em [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/execjs-1.2.4.gemspec]: formato de data inválido na especificação: "2011-08-03 00:00:
00.000000000Z "
Gemspec inválido em [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/temple-0.3.3.gemspec]: formato de data inválido na especificação: "2011-08-26 00:00:
00.000000000Z "
Gemspec inválido em [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/guard-0.6.3.gemspec]: formato de data inválido na especificação: "2011-09-01 00: 00: 0
0,000000000Z "
Gemspec inválido em [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/guard-livereload-0.3.1.gemspec]: formato de data inválido na especificação: "2011-09
-01 00: 00: 00.000000000Z "
Gemspec inválido em [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/rack-cache-1.0.3.gemspec]: formato de data inválido na especificação: "2011-08-27 00
: 00: 00.000000000Z "
Ambiente RubyGems:
  - VERSÃO RUBYGEMS: 1.7.2
  - VERSÃO RUBY: 1.8.7 (patchlevel 352 de 30/06/2011) [i386-mingw32]
  - DIRETÓRIO DE INSTALAÇÃO: D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8
  - RUBY EXECUTÁVEL: D: /RailsInstaller/Ruby1.8.7/bin/ruby.exe
  - DIRETÓRIO EXECUTÁVEL: D: /RailsInstaller/Ruby1.8.7/bin
  - PLATAFORMAS RUBYGEMS:
    - rubi
    - x86-mingw32
  - CAMINHOS GEM:
     - D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8
     - C: / Documentos e configurações / jeygokul / .gem / ruby ​​/ 1.8
  - CONFIGURAÇÃO DO GEM:
     -: update_sources => true
     -: verboso => ​​verdadeiro
     -: benchmark => false
     -: backtrace => false
     -: bulk_threshold => 1000
  - FONTES REMOTAS:
     - http://rubygems.org/

Respostas:


45

Corrigi esse problema atualizando meu RubyGems para 1.8.10 com

gem update --system

Editar: Você também pode tentar (conforme sugerido por ZeissS)

gem install rubygems-update
update_rubygems

16
Eu tenho 1.8.10 e ainda estou recebendo este
DGM de

3
Tente executar "gem pristine [gemname]" para as gemas que estão causando esses avisos.
Michael,

2
Isso também não funcionou para mim - porque o comando "gem update --system" causou exatamente o mesmo problema e "gem pristine" não fez nada. Tive que seguir a solução de @Romain_Tribes e excluir os arquivos gemspec manualmente antes de executar novamente uma atualização de gem
Taryn East

4
Esta não é uma opção muito boa no ubuntu, especialmente para usuários casuais de ruby.
Phillip Whelan

2
A resposta de GaborKomaromi abaixo (ou uma das descobertas .. nos comentários) funciona. Este não.
Gotofritz,

132

A solução final é esta:

Pesquise os arquivos "spec" no diretório Ruby: * C: \ Ruby187 \ lib \ ruby ​​\ gems \ 1.8 \ especificações *

Se um arquivo gemspec contém algo assim: s.date =% q {2011-10-13 00: 00: 00.000000000Z } Em seguida, exclua a parte 00: 00: 00.000000000Z : s.date =% q {2011-10- 13}

Depois de salvar os arquivos gemspec, o problema está resolvido.


2
Isso funcionou para mim (ruby 1.8.7 / win7), as outras soluções não
Felix Alcala

3
Funcionou perfeitamente no ubuntu com ruby ​​1.8.7, gem 1.7.2. Obrigado!
Dan

9
Isso removerá a string do arquivo de especificação: "find. -Type f | xargs perl -pi -e 's / 00: 00: 00 \ .000000000Z //'"
Rainer Blessing

17
find /var/lib/gems/1.8/specifications -name * .gemspec -type f | xargs perl -pi -e 's / 00: 00: 00 \ .000000000Z //' no Ubuntu
kubek2k

4
sed -i 's/ 00:00:00.000000000Z//g' path_to_gemspecs
Pedro Rolo

46

Nenhuma dessas soluções funcionou para mim. Para consertar, removi todo o conteúdo do diretório mencionado (algum / caminho / para / especificação /) e instalei as joias de que preciso (na verdade, Bundler e instalação do pacote).


Isso é simples, rápido e eficaz. Experimente antes de qualquer um dos outros.
Tim Scollick

1
Única solução que funcionou para mim também. Mas não tenho certeza se essa é a solução certa.
Suren

Isso funcionou para mim. Estava executando o gem udpate --system que me levou a esse problema!
Dave Isaacs

12

Além de executar gem update --systemeu usei gem install <gem with bad gemspec>em cada um dos itens gem env relatado como ruim. Isso eliminou os erros na minha máquina.


5
Você pode reinstalar com "gem pristine [gemname]" ou fazer um "gem pristine --all" para reinstalar as gemas do cache sem baixá-las novamente.
Michael,

10

Como Michael disse no comentário:

gem pristine --all

6

Tive o mesmo problema ao tentar instalar um GEM no 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"

As opções acima não funcionaram para mim. gem envrelatou o seguinte:

RubyGems Environment:
  - RUBYGEMS VERSION: 1.7.2
  - RUBY VERSION: 1.8.7 (2011-06-30 patchlevel 352) [i686-linux]

Portanto, presumi que esse problema fosse devido ao fato de eu precisar de uma versão mais recente do RubyGems instalada.

Emitindo gem update --systemo seguinte aviso:

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.

No entanto, finalmente consegui atualizar rubygemspara 1.8.15 emitindo:

sudo gem install rubygems-update && update_rubygems

Tudo deu certo depois disso, boa sorte! :)


Para mim no Ubuntu, foi preciso sudo apt-get purge rubygemsseguir sudo apt-get install rubygemse depois instalar todas as joias novamente. Estranho, mas pelo menos funcionou: P (o
texto

3

Gemspec inválido em [/var/lib/gems/1.8/specifications/chronic-0.6.4.gemspec]: formato de data inválido na especificação: "2011-09-09 00: 00: 00.000000000Z"

A solução simples para esse tipo de problema é navegar até o arquivo .. por exemplo.

Etapa 1. cd /var/lib/gems/1.8/specifications
etapa 2. abra o arquivo (ronic-0.6.4.gemspec) no editor de sua escolha ... (geditronic-0.6.4.gemspec)
etapa 3. altere s.date =% q {2011-10-13 00: 00: 00.000000000Z} para s.date =% q {2011-10-13}

Felicidades :)


2

Acabei de ter o mesmo problema no meu Ubuntu depois de atualizar para 10.10. Nenhuma das opções acima funcionou para mim. Tive que instalar o script update_rubygems de http://rubygems.org/pages/download e executá-lo uma vez. Posteriormente, tudo funcionou.


2

Corrigi este problema de 'especificação de formato de data inválida' alterando a linha correspondente em D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications/tilt-1.3.3.gemspec colocando s.date = Time.now em vez de s.date = "2011-08-25 00: 00: 00.000000000Z" O mesmo pode ser usado para os outros arquivos também.


2

Tenho muitas joias para consertar uma por uma, e tento as duas update_rubygemse gem pristine --allainda assim não tenho sorte.

Então, eu uso rvm clear gemsetpara remover todas as gemas com gemspec errado. Execute bundle installpara reinstalar todas as gemas, e Viola!


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' *

1

Resolvido executando gem update --systementão gem update.


funcionou para mim, só recebi aquele erro depois de fazer a atualização do gem --system, a maioria deles desapareceu após a atualização do gem. para outros, removi o arquivo gemspec.
mrbrdo

1

As várias soluções observadas nessas respostas não funcionaram para mim. O que funcionou foi reinstalar as versões específicas das gemas ofensivas. No seu caso, isso seria parecido com:

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

Eu acho que vou gem pristine xxx yyy zzzou gem pristine --allnão sempre (sempre?) Para os repositórios de gem, enquanto gem install xxx -v v.r.misso.

De qualquer forma, reinstalar as versões ofensivas das joias funcionou para mim, embora fosse entediante ...


1

rvm gemset cleare então bundle installfuncionou para mim!


1

"gem install rubygems-update", "update_rubygems" e "gem pristine --all" é a combinação que resolveu o problema para mim depois que nenhum dos itens listados anteriormente funcionou.


0

No meu caso, as versões gem referenciadas nem mesmo foram instaladas. Eu tinha essas joias, mas não as versões cujos gemspecs estavam causando o erro. Portanto, acabei de excluir cada um dos arquivos /path/to/specifications/offending-XYZZ.gemspec.


0

Esta não é realmente uma resposta, mas se alguém quiser cavar mais, encontrei esta especificação de gemspec aqui: http://rubygems.rubyforge.org/rubygems-update/Gem/Specification.html (role para baixo até date = date () e clique em para mostrar a fonte):

@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

Então eu acho que este é o código que analisa esse gemspec, e parece que o formato de data que está nos arquivos que mostram erros não está em conformidade com isso.

O que fiz foi apenas corrigir manualmente as gemspecs ofensivas, conforme sugerido acima (alterando as datas para "aaaa-mm-dd", funciona para mim.

Todas as especificações de rubygem que tive que tiveram esse problema também têm uma linha

s.rubygems_version =% q {1.3.5}

Acho que são apenas joias antigas? E o que há com aqueles% q {...} afinal?


0

Se você teve esse erro no Ubuntu 11.04, minha solução foram as seguintes linhas de comando:

$ sudo apt-get install ruby1.9.1

Depois de fazer isso, você não obterá o erro de data.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.