Spesifikasi format tanggal tidak valid di gemspec

111

Saya mendapatkan kesalahan berikut ketika saya mencoba menggunakan permata di windows, dan saya juga merujuk ke pos stackoverflow ini dan rubygems serta rel yang diperbarui. Tapi tidak ada yang bisa menyelesaikan masalah.

Berikut ini adalah kesalahan lengkapnya,

    D: \> gem env
Gemspec tidak valid di [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/tilt-1.3.3.gemspec]: format tanggal tidak valid dalam spesifikasi: "2011-08-25 00:00:00
.000000000Z "
Gemspec tidak valid di [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/execjs-1.2.4.gemspec]: format tanggal tidak valid dalam spesifikasi: "2011-08-03 00:00:
00.000000000Z "
Gemspec tidak valid di [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/temple-0.3.3.gemspec]: format tanggal tidak valid dalam spesifikasi: "2011-08-26 00:00:
00.000000000Z "
Gemspec tidak valid di [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/guard-0.6.3.gemspec]: format tanggal tidak valid dalam spesifikasi: "2011-09-01 00: 00: 0
0,00000000Z "
Gemspec tidak valid di [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/guard-livereload-0.3.1.gemspec]: format tanggal tidak valid dalam spesifikasi: "2011-09
-01 00: 00: 00.000000000Z "
Gemspec tidak valid di [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/rack-cache-1.0.3.gemspec]: format tanggal tidak valid dalam spesifikasi: "2011-08-27 00
: 00: 00.000000000Z "
Gemspec tidak valid di [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/tilt-1.3.3.gemspec]: format tanggal tidak valid dalam spesifikasi: "2011-08-25 00:00:00
.000000000Z "
Gemspec tidak valid di [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/execjs-1.2.4.gemspec]: format tanggal tidak valid dalam spesifikasi: "2011-08-03 00:00:
00.000000000Z "
Gemspec tidak valid di [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/temple-0.3.3.gemspec]: format tanggal tidak valid dalam spesifikasi: "2011-08-26 00:00:
00.000000000Z "
Gemspec tidak valid di [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/guard-0.6.3.gemspec]: format tanggal tidak valid dalam spesifikasi: "2011-09-01 00: 00: 0
0,00000000Z "
Gemspec tidak valid di [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/guard-livereload-0.3.1.gemspec]: format tanggal tidak valid dalam spesifikasi: "2011-09
-01 00: 00: 00.000000000Z "
Gemspec tidak valid di [D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications
/rack-cache-1.0.3.gemspec]: format tanggal tidak valid dalam spesifikasi: "2011-08-27 00
: 00: 00.000000000Z "
Lingkungan RubyGems:
  - RUBYGEMS VERSION: 1.7.2
  - RUBY VERSION: 1.8.7 (2011-06-30 patchlevel 352) [i386-mingw32]
  - DIREKTUR INSTALASI: D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: D: /RailsInstaller/Ruby1.8.7/bin/ruby.exe
  - DIRECTORY EXECUTABLE: D: /RailsInstaller/Ruby1.8.7/bin
  - PLATFORM RUBYGEMS:
    - ruby
    - x86-mingw32
  - JALAN PERMATA:
     - D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8
     - C: / Dokumen dan Pengaturan / jeygokul / .gem / ruby ​​/ 1.8
  - KONFIGURASI PERMATA:
     -: update_sources => true
     -: verbose => true
     -: benchmark => false
     -: lacak balik => salah
     -: bulk_threshold => 1000
  - SUMBER REMOTE:
     - http://rubygems.org/
Abhishek
sumber

Jawaban:

45

Saya telah memperbaiki masalah ini dengan memutakhirkan RubyGems saya ke 1.8.10 dengan

gem update --system

Sunting: Anda juga dapat mencoba (seperti yang disarankan oleh ZeissS)

gem install rubygems-update
update_rubygems
Michael
sumber
16
Saya memiliki 1.8.10 dan masih mendapatkan ini
DGM
3
Coba jalankan "gem pristine [gemname]" untuk permata yang menyebabkan peringatan tersebut.
Michael
2
Ini juga tidak berhasil untuk saya - karena perintah "gem update --system" menyebabkan masalah yang sama persis dan "gem pristine" tidak melakukan apa pun. Saya harus mengikuti solusi @ Romain_Tribes dan menghapus file gemspec dengan tangan sebelum menjalankan kembali pembaruan permata
Taryn East
4
Ini bukan pilihan yang baik di ubuntu, terutama untuk pengguna ruby ​​biasa.
Phillip Whelan
2
Jawaban GaborKomaromi di bawah (atau salah satu temuan .. di komentar) berhasil. Yang ini tidak.
gotofritz
132

Solusi utamanya adalah ini:

Cari file "spec" di direktori Ruby Anda: * C: \ Ruby187 \ lib \ ruby ​​\ gems \ 1.8 \ spesifikasi *

Jika file gemspec berisi sesuatu seperti ini: s.date =% q {2011-10-13 00: 00: 00.000000000Z } Kemudian hapus bagian 00: 00: 00.000000000Z : s.date =% q {2011-10- 13}

Setelah menyimpan file gemspec itu, masalahnya teratasi.

GaborKomaromi
sumber
2
Ini berhasil untuk saya (ruby 1.8.7 / win7), solusi lain tidak
Felix Alcala
3
Bekerja seperti pesona di ubuntu dengan ruby ​​1.8.7, gem 1.7.2. Terima kasih!
Dan
9
Ini akan menghapus string dari file spesifikasi: "find. -Type f | xargs perl -pi -e 's / 00: 00: 00 \ .000000000Z //'"
Rainer Blessing
17
temukan /var/lib/gems/1.8/specifications -name * .gemspec -type f | xargs perl -pi -e 's / 00: 00: 00 \ .000000000Z //' di Ubuntu
kubek2k
4
sed -i 's/ 00:00:00.000000000Z//g' path_to_gemspecs
Pedro Rolo
46

Tak satu pun dari solusi ini berhasil untuk saya. Untuk memperbaikinya, saya menghapus semua konten dari direktori yang disebutkan (beberapa / path / ke / spesifikasi /) lalu saya menginstal permata yang saya butuhkan (sebenarnya, Bundler lalu bundle install).

Suku Romain
sumber
Ini sederhana, cepat dan efektif. Coba ini sebelum yang lain.
Tim Scollick
1
Hanya solusi yang berhasil untuk saya juga. Tetapi tidak yakin apakah ini perbaikan yang benar.
Suren
Ini berhasil untuk saya. Itu menjalankan gem udpate --sistem yang membuat saya mengalami masalah ini!
Dave Isaacs
12

Selain menjalankan gem update --systemsaya digunakan gem install <gem with bad gemspec>pada setiap item gem env dilaporkan buruk. Ini membersihkan kesalahan pada mesin saya.

TheArtTrooper
sumber
5
Anda dapat menginstal ulang dengan "gem pristine [gemname]" atau melakukan "gem pristine --all" untuk menginstal ulang gem dari cache tanpa mengunduhnya kembali.
Michael
10

Seperti yang dikatakan Michael dalam komentarnya:

gem pristine --all
tembakan sayap
sumber
6

Mengalami masalah yang sama saat mencoba menginstal GEM di 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"

Opsi di atas tidak berhasil untuk saya. gem envmelaporkan hal berikut:

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

Jadi saya kira masalah ini disebabkan oleh fakta bahwa saya memerlukan versi RubyGems yang lebih baru diinstal.

Menerbitkan gem update --systemperingatan berikut:

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.

Namun saya akhirnya dapat memperbarui rubygemske 1.8.15 dengan mengeluarkan:

sudo gem install rubygems-update && update_rubygems

Semuanya berfungsi setelah itu, semoga berhasil! :)

JonnyReeves
sumber
Bagi saya di Ubuntu, dibutuhkan sudo apt-get purge rubygemsdiikuti oleh sudo apt-get install rubygemsdan kemudian menginstal semua permata lagi. Canggung, tapi setidaknya berhasil: P (di atas tidak berhasil untuk saya)
Jeff Tratner
3

Gemspec tidak valid di [/var/lib/gems/1.8/specifications/chronic-0.6.4.gemspec]: format tanggal tidak valid dalam spesifikasi: "2011-09-09 00: 00: 00.000000000Z"

Perbaikan sederhana untuk masalah semacam itu adalah menavigasi ke file .. misalnya.

Langkah 1. cd /var/lib/gems/1.8/specifications
langkah 2. buka file (kronis-0.6.4.gemspec) di editor pilihan Anda ... (gedit kronis-0.6.4.gemspec)
langkah 3. ubah s.date =% q {2011-10-13 00: 00: 00.000000000Z} menjadi s.date =% q {2011-10-13}

Bersulang :)

Kecanduan
sumber
2

Saya baru saja mengalami masalah yang sama di ubuntu saya setelah memutakhirkan ke 10.10. Semua hal di atas tidak berhasil untuk saya. Saya harus menginstal skrip update_rubygems dari http://rubygems.org/pages/download dan menjalankannya sekali. Kata penutup semuanya bekerja.

ZeissS
sumber
2

Saya telah memperbaiki masalah ini 'spesifikasi format tanggal tidak valid' dengan, mengubah baris yang sesuai di D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications/tilt-1.3.3.gemspec dengan meletakkan s.date = Time.now alih-alih s.date = "2011-08-25 00: 00: 00.000000000Z" Hal yang sama juga dapat digunakan pada file lain.

sanitha
sumber
2

Saya sudah terlalu banyak permata untuk diperbaiki satu per satu, dan mencoba keduanya update_rubygemsdan gem pristine --allmasih belum berhasil.

Jadi saya gunakan rvm clear gemsetuntuk menghapus semua permata dengan gemspec yang salah. Jalankan bundle installuntuk menginstal ulang semua permata, dan Viola!

taiansu
sumber
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
sumber
1

Diselesaikan dengan menjalankan gem update --systemitu gem update.

David Walsh
sumber
bekerja untuk saya, saya baru saja mendapat kesalahan itu setelah melakukan pembaruan permata - sistem, kebanyakan dari mereka hilang setelah pembaruan permata. untuk orang lain saya menghapus file gemspec.
mrbrdo
1

Berbagai solusi yang tercantum dalam jawaban ini tidak berhasil untuk saya. Apa yang berhasil adalah menginstal ulang versi spesifik dari permata yang melanggar. Dalam kasus Anda, itu akan terlihat seperti:

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

Saya berpikir bahwa gem pristine xxx yyy zzzatau gem pristine --allmungkin tidak akan selalu (pernah?) Ke gudang permata sedangkan gem install xxx -v v.r.mtidak.

Bagaimanapun, menginstal ulang versi permata yang melanggar bekerja untuk saya, meskipun itu membosankan ...

Chris Markle
sumber
1

rvm gemset cleardan kemudian bundle installbekerja untuk saya!

Vibhuti
sumber
1

"gem install rubygems-update", "update_rubygems", lalu "gem pristine --all" adalah kombinasi yang memecahkan masalah bagi saya setelah tidak satu pun dari yang terdaftar sebelumnya berfungsi.

Brian Knoblauch
sumber
0

Dalam kasus saya, versi permata yang direferensikan bahkan tidak diinstal. Saya memiliki permata itu, tetapi bukan versi yang gemspecs menyebabkan kesalahan. Jadi, saya baru saja menghapus setiap file /path/to/specifications/offending-XYZZ.gemspec.

Jon Garvin
sumber
0

Ini sebenarnya bukan jawaban tetapi jika seseorang ingin menggali lebih banyak, saya menemukan spesifikasi gemspec ini di sini: http://rubygems.rubyforge.org/rubygems-update/Gem/Specification.html (gulir ke bawah to date = date () dan klik untuk menunjukkan sumber):

@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

Jadi saya kira ini adalah kode yang mem-parsing gemspec itu, dan sepertinya format tanggal yang ada di file yang menunjukkan kesalahan tidak sesuai dengan ini.

Apa yang saya lakukan adalah hanya memperbaiki secara manual gemspec yang menyinggung seperti yang disarankan di atas (mengubah tanggal menjadi "yyyy-mm-dd", itu berhasil untuk saya.

Semua spesifikasi rubygem yang saya miliki yang memiliki masalah ini juga memiliki garis

s.rubygems_version =% q {1.3.5}

Jadi saya menebak ini hanya permata lama? Dan ada apa dengan% q {...} itu?

PapaFreud
sumber
0

Jika Anda mengalami kesalahan ini di Ubuntu 11.04, solusi saya adalah baris perintah berikut:

$ sudo apt-get install ruby1.9.1

Setelah melakukan ini, Anda tidak akan mendapatkan kesalahan tanggal.

mazyZed
sumber