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/
Abhishek
fonte

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
Michael
fonte
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.

GaborKomaromi
fonte
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).

Romain Tribes
fonte
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.

TheArtTrooper
fonte
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
wingfire
fonte
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! :)

JonnyReeves
fonte
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 :)

Viciado
fonte
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.

ZeissS
fonte
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.

sanitha
fonte
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!

Taiansu
fonte
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
fonte
1

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

David Walsh
fonte
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 ...

Chris Markle
fonte
1

rvm gemset cleare então bundle installfuncionou para mim!

Vibhuti
fonte
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.

Brian Knoblauch
fonte
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.

Jon Garvin
fonte
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?

PapaFreud
fonte
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.

confuso
fonte