Gemspec'te geçersiz tarih biçimi belirtimi


111

Pencerelerde mücevher kullanmaya çalıştığımda aşağıdaki hatayı alıyorum ve ayrıca bu stackoverflow gönderisine ve güncellenmiş rubygems ve raylara da değindim. Ama sorunu hiçbir şey çözemezdi.

Aşağıdaki tam hatadır,

    D: \> mücevher env
[D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications içinde geçersiz gemspec
/tilt-1.3.3.gemspec]: spesifikasyonda geçersiz tarih biçimi: "2011-08-25 00:00:00
.000000000Z"
[D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications içinde geçersiz gemspec
/execjs-1.2.4.gemspec]: özellikte geçersiz tarih biçimi: "2011-08-03 00:00:
00.000000000Z"
[D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications içinde geçersiz gemspec
/temple-0.3.3.gemspec]: özellikte geçersiz tarih biçimi: "2011-08-26 00:00:
00.000000000Z"
[D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications içinde geçersiz gemspec
/guard-0.6.3.gemspec]: spesifikasyonda geçersiz tarih biçimi: "2011-09-01 00: 00: 0
0.000000000Z"
[D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications içinde geçersiz gemspec
/guard-livereload-0.3.1.gemspec]: özellikte geçersiz tarih biçimi: "2011-09
-01 00: 00: 00.000000000Z "
[D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications içinde geçersiz gemspec
/rack-cache-1.0.3.gemspec]: spesifikasyonda geçersiz tarih biçimi: "2011-08-27 00
: 00: 00.000000000Z"
[D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications içinde geçersiz gemspec
/tilt-1.3.3.gemspec]: spesifikasyonda geçersiz tarih biçimi: "2011-08-25 00:00:00
.000000000Z"
[D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications içinde geçersiz gemspec
/execjs-1.2.4.gemspec]: özellikte geçersiz tarih biçimi: "2011-08-03 00:00:
00.000000000Z"
[D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications içinde geçersiz gemspec
/temple-0.3.3.gemspec]: özellikte geçersiz tarih biçimi: "2011-08-26 00:00:
00.000000000Z"
[D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications içinde geçersiz gemspec
/guard-0.6.3.gemspec]: spesifikasyonda geçersiz tarih biçimi: "2011-09-01 00: 00: 0
0.000000000Z"
[D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications içinde geçersiz gemspec
/guard-livereload-0.3.1.gemspec]: özellikte geçersiz tarih biçimi: "2011-09
-01 00: 00: 00.000000000Z "
[D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications içinde geçersiz gemspec
/rack-cache-1.0.3.gemspec]: spesifikasyonda geçersiz tarih biçimi: "2011-08-27 00
: 00: 00.000000000Z"
RubyGems Ortamı:
  - RUBYGEMS SÜRÜM: 1.7.2
  - RUBY VERSİYONU: ​​1.8.7 (2011-06-30 yama seviyesi 352) [i386-mingw32]
  - KURULUM REHBERİ: D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8
  - RUBY UYGULANABİLİR: D: /RailsInstaller/Ruby1.8.7/bin/ruby.exe
  - UYGULANABİLİR DİZİN: D: /RailsInstaller/Ruby1.8.7/bin
  - RUBYGEMS PLATFORMLARI:
    - yakut
    - x86-mingw32
  - GEM YOLLARI:
     - D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8
     - C: / Documents and Settings / jeygokul / .gem / ruby ​​/ 1.8
  - GEM KONFİGÜRASYONU:
     -: update_sources => true
     -: verbose => doğru
     -: kıyaslama => yanlış
     -: backtrace => yanlış
     -: bulk_threshold => 1000
  - UZAKTAN KAYNAKLAR:
     - http://rubygems.org/

Yanıtlar:


45

Ben bu sorunu düzelttikten 1.8.10 benim RubyGems yükseltme ile

gem update --system

Düzenleme: Ayrıca deneyebilirsiniz (ZeissS tarafından önerildiği gibi)

gem install rubygems-update
update_rubygems

16
1.8.10'um var ve hala bunu alıyorum
DGM

3
Bu uyarılara neden olan taşlar için "gem pristine [gemname]" çalıştırmayı deneyin.
Michael

2
Bu benim için de işe yaramadı - çünkü "gem update --system" komutu aynı soruna neden oldu ve "gem pristine" hiçbir şey yapmadı. Bir mücevher güncellemesini yeniden çalıştırmadan önce @ Romain_Tribes'in çözümünü takip etmek ve gemspec dosyalarını elle silmek zorunda kaldım
Taryn East

4
Bu, özellikle sıradan Ruby kullanıcıları için ubuntu'da çok iyi bir seçenek değil.
Phillip Whelan

2
GaborKomaromi'nin aşağıdaki cevabı (veya yorumlarda buluntulardan biri) işe yarıyor. Bu değil.
gotofritz

132

Nihai çözüm şudur:

Ruby dizininizdeki "spec" dosyalarını arayın: * C: \ Ruby187 \ lib \ ruby ​​\ gems \ 1.8 \ spec *

Bir gemspec dosyası şuna benzer bir şey içeriyorsa: s.date =% q {2011-10-13 00: 00: 00.000000000Z } Sonra 00: 00: 00.000000000Z bölümünü silin : s.date =% q {2011-10- 13}

Bu gemspec dosyalarını kaydettikten sonra sorun çözüldü.


2
Bu benim için çalıştı (yakut 1.8.7 / win7), diğer çözümler işe yaramadı
Felix Alcala

3
Yakut 1.8.7, mücevher 1.7.2 ile ubuntu'da bir cazibe gibi çalıştı. Teşekkürler!
Dan

9
Bu, dizeyi belirtim dosyasından kaldıracaktır: "find. -Type f | xargs perl -pi -e 's / 00: 00: 00 \ .000000000Z //'"
Rainer Blessing

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

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

46

Bu çözümlerin hiçbiri benim için işe yaramadı. Düzeltmek için, belirtilen dizinin tüm içeriğini kaldırdım (bazı / yol / / spesifikasyon /), ardından ihtiyacım olan mücevherleri yükledim (aslında, Bundler sonra paket kurulumu).


Bu basit, hızlı ve etkilidir. Bunu diğerlerinden önce deneyin.
Tim Scollick

1
Benim için de işe yarayan tek çözüm. Ancak bunun doğru çözüm olup olmadığından emin değilim.
Suren

Bu benim için çalıştı. Beni bu soruna götüren gem udpate --sistemi çalıştırıyordu!
Dave Isaacs

12

Çalıştırmanın yanı sıra gem update --systemkullandığım gem install <gem with bad gemspec>bad olarak rapor öğesi mücevher env her biri üzerinde. Bu, makinemdeki hataları temizledi.


5
"Gem pristine [gemname]" ile yeniden yükleyebilir veya mücevherleri yeniden yüklemeden önbellekten yeniden yüklemek için "gem pristine --all" yapabilirsiniz.
Michael

10

Michael'ın yorumda söylediği gibi:

gem pristine --all

6

Ubuntu 11.10 üzerinde bir GEM kurmaya çalışırken aynı problemi yaşadım.

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"

Yukarıdaki seçenekler benim için işe yaramadı. gem envaşağıdakileri bildirdi:

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

Bu yüzden, bu sorunun daha yeni bir RubyGems sürümünün kurulu olmasını istememden kaynaklandığını varsaydım.

Yayın gem update --systemaşağıdaki uyarıyı yeilded:

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.

Ancak sonunda aşağıdakileri rubygemsyayınlayarak 1.8.15'e güncelleyebildim :

sudo gem install rubygems-update && update_rubygems

Bundan sonra her şey çalıştı, iyi şanslar! :)


Benim için Ubuntu'da, bunu sudo apt-get purge rubygemstakip etti sudo apt-get install rubygemsve ardından tüm mücevherleri tekrar kurdu. Garip, ama en azından işe yaradı: P (yukarıdakiler benim için işe yaramadı)
Jeff Tratner

3

[/Var/lib/gems/1.8/specifications/chronic-0.6.4.gemspec] 'de geçersiz gemspec: spesifikasyonda geçersiz tarih biçimi: "2011-09-09 00: 00: 00.000000000Z"

Bu tür bir sorunun basit çözümü dosyaya gitmektir .. örneğin.

Adım 1. cd /var/lib/gems/1.8/specifications
adım 2. dosyayı (kronik-0.6.4.gemspec) istediğiniz düzenleyicide açın ... (gedit kronik-0.6.4.gemspec)
3. adım. s.date =% q {2011-10-13 00: 00: 00.000000000Z} değerini s.date =% q {2011-10-13} olarak değiştirin

Şerefe :)


2

10.10'a yükselttikten sonra ubuntu'mda da aynı sorunu yaşadım. Yukarıdakilerin hiçbiri benim için işe yaramadı. Http://rubygems.org/pages/download adresinden update_rubygems komut dosyasını kurmam ve bir kez çalıştırmam gerekiyordu. Afterwords her şey çalıştı.


2

Bu sorunu 'geçersiz tarih biçimi belirtimi'ni, s.date = koyarak D: /RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/specifications/tilt-1.3.3.gemspec'deki ilgili satırı değiştirerek düzelttim. S.date = "2011-08-25 00: 00: 00.000000000Z" yerine Time.now Aynı şey diğer dosyalar için de kullanılabilir.


2

Tek tek düzeltmek için çok fazla cevherim var ve ikisini de dene update_rubygemsvegem pristine --all hala şans.

Bu yüzden rvm clear gemsetyanlış değerli taşlara sahip tüm mücevherleri çıkarmak için kullanıyorum. bundle installTüm mücevherleri ve Viola'yı yeniden yüklemek için yürütün !


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

gem update --systemDaha sonra koşarak çözüldü gem update.


benim için çalıştı, gem güncellemesini yaptıktan sonra bu hatayı aldım - sistem, çoğu gem güncellemesinden sonra gitti. diğerleri için gemspec dosyasını kaldırdım.
mrbrdo

1

Bu cevaplarda belirtilen çeşitli çözümler benim için işe yaramadı. İşe yarayan şey, rahatsız edici mücevherlerin belirli sürümlerini yeniden kurmaktı. Sizin durumunuzda bu şuna benzerdi:

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

Gem depolarına her zaman (hiç?) Çıkmayacağını gem pristine xxx yyy zzzveya gem pristine --allçıkmayacağını düşünüyorum gem install xxx -v v.r.m.

Her neyse, sıkıcı olmasına rağmen mücevherlerin rahatsız edici sürümlerini yeniden yüklemek benim için çalıştı ...


1

rvm gemset clearve sonra bundle installbenim için çalıştı!


1

"gem install rubygems-update", "update_rubygems", ardından "gem pristine --all", daha önce listelenenlerin hiçbiri işe yaramadıktan sonra benim için sorunu çözen kombinasyondur.


0

Benim durumumda, atıfta bulunulan mücevher sürümleri bile yüklenmedi. O mücevherler bende vardı, ama gemspecs'in hataya neden olan sürümleri yoktu. Bu yüzden, /path/to/specifications/offending-XYZZ.gemspec dosyalarının her birini sildim.


0

Bu gerçekten bir cevap değil, ancak biri daha fazla kazmak istiyorsa, bu gemspec spesifikasyonunu burada buldum: http://rubygems.rubyforge.org/rubygems-update/Gem/Specification.html (aşağı kaydırın = tarih () ve tıklayın kaynağı göstermek için):

@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

Sanırım bu, gemspec'i ayrıştıran kod ve hataları gösteren dosyalardaki tarih formatının buna uymadığı gibi görünüyor.

Yaptığım şey, yukarıda önerildiği gibi rahatsız edici gemspec'leri manuel olarak düzeltmekti (tarihleri ​​"yyyy-aa-gg" olarak değiştirmek, benim için çalışıyor.

Bu sorunu yaşayan tüm rubygem özelliklerinin de bir çizgisi var

s.rubygems_version =% q {1.3.5}

Yani bunların sadece eski taşlar olduğunu tahmin ediyorum? Peki bu% q {...} neyle ilgili?


0

Ubuntu 11.04'te bu hatayı yaşadıysanız, çözümüm aşağıdaki komut satırlarıydı:

$ sudo apt-get install ruby1.9.1

Bunu yaptıktan sonra tarih hatası almayacaksınız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.