Spesifikasyondaki tarih biçimi nedeniyle geçersiz gemspec


89

Bundler (sürüm 1.0.12) sayesinde yaptığım bir mücevheri bir Gemfile'a dahil ettiğimde ve ardından aynı şekilde paketlemeye veya tırmıklamaya çalışıyorum:

$ rake

Bu hata mesajını aldım:

Invalid gemspec in [/Users/zagzag/.rvm/gems/ruby-1.9.2-p180@foobar/specifications/myplugin-1.0.0.gemspec]: invalid date format in specification: "2011-04-21 00:00:00.000000000Z"

Son Mac OS X (10.6.4) kullanıyorum, şunlarla:

$ ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.4.0]

ve:

$ gem -v
Invalid gemspec in [/Users/zagzag/.rvm/gems/ruby-1.9.2-p180@foobar/specifications/myplugin-1.0.0.gemspec]: invalid date format in specification: "2011-04-21 00:00:00.000000000Z"
1.7.2

Bu sorunu nasıl çözeceğimi gerçekten anlamıyorum. Herhangi bir fikir için teşekkürler.


Bu hataları şimdi sürekli alıyorum !!! Nasıl düzelttin? Şimdiye kadar iki cevap yardımcı olmadı ...
Meltemi

Herkesin önerdiği, salt okunur dosya. Nasıl değiştirebilirim?
chhantyal

Yanıtlar:


143

"Spesifikasyondaki geçersiz tarih biçimi" hatasını düzeltmenin yolu:

1.) Şu adreste bulunan özellikler klasörüne gidin:

/usr/local/lib/ruby/gems/1.8/specifications/

2.) Soruna neden olan özelliği bulun.

3.) Değişim s.date = %q{2011-05-21 00:00:00.000000000Z}içins.date = %q{2011-05-21}

Bu benim için bir KAZANÇ! İyi şanslar


Bir muamele yaptım, bu kafamı karıştırıyordu!
David Archer

Benim için çalıştı! Ruby 1.8 yüklü Windows XP'deydim. Em.websocket-0.3.2.gemspec, 'livereload' ( livereload.com ) kullanmaya çalışırken bu hatayı benim için atıyordu .
program247365

Benim için de çalıştı, kronik 1.6.4 üzerinde Linux'ta
Gepsens

Bir mücevher için sorunu düzeltir, ancak kurulu mücevherlerin ardından bu hataya tekrar neden olabilir.
MickaelFM

2
bu beni çıldırtıyor ... 50 adet 3. parti cevherin mücevher özelliklerini değiştirmem mi gerekiyor? neden mücevher özelliklerini güncellemediler, bir yıl geçti ..
oma

60

İşte tüm mücevherleriniz için bunu düzeltmek için komut:

perl -p -i -e 's/ 00:00:00.000000000Z//' ~/gems/specifications/*.gemspec

Bu dönüştürür s.date = %q{2011-05-21 00:00:00.000000000Z}etmek s.date = %q{2011-05-21}ve sorunu çözecektir.


Bunu yapmadan önce hızlı bir yedekleme yapmanın güzel yolu:git init . && git commit -am "backup
Troyt

Neden tarih formatını değiştirmeye çalışıyorum, bunu yapma iznim yok diyor. Ne yapalım?
chhantyal

@chhantyal O halde sudo olarak çalıştırmanız gerekiyor. Bunun için çok teşekkür ederim! Bana çok zaman kazandırdı.
Matt McClure

21

Lütfen Damian Nowak'ın yorumuna dikkat edin. Bu komutlar muhtemelen yakut taşlarınızı bozabilir!

Ubuntu 11.10'da aşağıdaki sorun bu hatayı çözdü:

sudo gem install rubygems-update
sudo update_rubygems     

Aşağıdakiler bazı sistemlerde çalışabilir ancak Debian tabanlı çalışmayabilir:

sudo gem update --system

Harika, oneiric'in son sürümüyle de çalışıyor. Ancak bu, manuel olarak yüklenen tüm mücevherleri temizliyor gibi görünüyor.
zehrer

1
Bunu kullanma. Yakut taşlarımı mahvetti. Bir sürü şeyi rm -rf yapmak zorunda kaldım ve depodan orijinal rubygems'e geri döndüm. Ya rubygems'i tamamen manuel olarak kurun ya da Ubuntu tarafından sağlanan bir rubygems kullanın. Alternatif olarak, PPA'daki mevcut rubygems'leri arayabilirsiniz. (Keşke yaklaşık bir ay önce yapılmış +
1'imi geri alabilseydim

1
@DamianNowak Bunu duyduğuma üzüldüm. Cevaba bir uyarı ekledim!
Mark

14

Yükseltebilirsiniz gem. Bunu düzeltmek için gemspecdosyayı doğrudan - adresinden düzenleyebilirsiniz.

2011-04-21 00:00:00.000000000Z

-e

YYYY-MM-DD

Veya raylarınızı da yükseltin

sudo gem update rails

Sorunu çözecektir.


@Meltemi, specificationsdizinin altında olacak , bu benim specificationsdizin yolum -/home/sayuj/.rvm/gems/ruby-1.9.2-p180/specifications/
Sayuj

Rayları güncellemek için +1 - sorunu çözer, ancak başlangıçta aynı uyarıları verir, doğru şekilde yüklenir ve sorun artık oluşmaz.
Adam Davis

6

Saati belirtmeyin ... sadece tarihi belirtin. 2011-04-21iyi çalışmalı.


Gem :: Specification.new | s | s.name = "myplugin" s.version = "1.0.0" s.platform = Gem :: Platform :: RUBY s.authors = ["..."] s.email = ["..."] s .homepage = "http: // ..." s.summary =% q {...} s.description =% q {...} s.rubyforge_project = "myplugin" s.files = git ls-files.split ("\ n ") s.test_files = git ls-files -- {test,spec,features}/*.split (" \ n ") s.require_paths = [" lib "] end
Zag zag ..

Cevabınız için teşekkürler. Size katılıyorum, ancak myplugin.gemspec dosyasında herhangi bir tarih veya tarih saat kullanmadım. Gem, Bundler tarafından otomatik olarak oluşturuldu. Sanırım bu sorun Bundler veya RVM yüzünden olabilir ... Bu garip.
Zag zag ..

4

Aynı sorunu yaşadım. Rubygems'de bir böcek gibi görünüyor. İşte onu düzelten commit: https://github.com/rubygems/rubygems/commit/21cccd55b823848c5e941093a615b0fdd6cd8bc7

Rubygems ve bundler'ı en son sürümlere güncellemeniz gerekir. Bundan sonra hala sorun yaşıyorsanız, size sorun veren mücevherleri kaldırmanız ve ardından yeniden yüklemeniz gerekebilir.


Redmine'in kendi 2.3.11 Rails sürümünü kullanması dışında, Rails 2.3.11 RubyGems> = 1.7.0 ile başarısız oluyor ve bahsettiğiniz commit 19 Mayıs 2011 tarihli, 1.7.0 sonrası (1 Nisan, 2011). Sanırım bu durumda spesifikasyon dosyalarını düzenlemeniz gerekiyor.
Olivier 'Ölbaum' Scherler

3

Bu Ben Hall'un cevabına daha çok bir yorum, ama öyle görünüyor ki o ayrıcalığa sahip değilim

gem güncellemeleri işe yaramadı, kötü tarih formatı nedeniyle mücevheri bile yükleyemeyeceğini düşünüyorum. Tarihleri ​​tek tek değiştirmek çok sinir bozucuydu, bu yüzden bir grep:

grep -i *.gemspec -e '.*s\.date.*=.*%q{\(....-..-..\) \(.*Z\)}

Ve sed için:

sed -i -e 's/\(.*\)s\.date.*=.*%q{\(....-..-..\) \(.*Z\)}/\1s.date = %q\{\2}/p' ./*.gemspec

Ve kendi sorumluluğunuzdadır !! Hala sedefli bir acemiyim, ama benim için çalıştı;)


2

Slicehost sunucumda özellikler klasörü farklı bir noktada bulunuyordu. Yol şu:

/usr/lib/ruby/gems/1.8/specifications

Sağlanan hata, özellikler klasörünün yolunu vermelidir.


2

Av tüfeği yaklaşımı: Tüm mücevherleri kaldırın ve paketleyiciyi yeniden çalıştırın.

  1. gem list --no-version | xargs gem uninstall -aIx
  2. rm -i `rvm gemdir`/specifications/*.gemspec
  3. gem update --system
  4. gem install bundler
  5. bundle install

Bir .rvmrcdosya kullanıyorsanız, 2. satırı çalıştırırken dikkatli olun çünkü gemdir ekstra çıktı üretebilir.
Jared Beck

1

(Hata düzeltmesi Rubygems'in kararlı bir sürümüne gelene kadar) Gem komutunun --version anahtarını kullanarak uyarı üreten mücevherlerin aynı sürümünü yeniden yükleyerek sorunu çözdüm.


1

Ben Hall'un dediği gibi, sistemden sisteme değişebilecek gemspec dosyasını düzeltmelisiniz. Hangi dosyanın olduğunu bilmek için, hata raporunda hangi dosyanın anlatıldığına bakın, örneğin:

[/Var/lib/gems/1.8/specifications/svn2git-2.1.2.gemspec] 'de geçersiz gemspec: spesifikasyonda geçersiz tarih biçimi: "2011-12-28 00: 00: 00.000000000Z"

Bu örnekte "/var/lib/gems/1.8/specifications/svn2git-2.1.2.gemspec" dosyasını düzenlemeli ve "2011-12-28 00: 00: 00.000000000Z" "2011-12-28" için değiştirmelisiniz s.date seçeneğinde.


1

Bu sorunu şimdi yaşadım. Rubygems'i güncellemek sorunu çözdü:

gem update --system

0

Bu benim çevrem:

RubyGems Environment:
- RUBYGEMS VERSION: 1.8.10
- RUBY VERSION: 1.9.2 (2011-07-09 patchlevel 290) [x86_64-darwin11.1.0]
- INSTALLATION DIRECTORY: /Users/user/.rvm/gems/ruby-1.9.2-p290@app
- RUBY EXECUTABLE: /Users/user/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
- EXECUTABLE DIRECTORY: /Users/user/.rvm/gems/ruby-1.9.2-p290@app/bin
- RUBYGEMS PLATFORMS:
  - ruby
  - x86_64-darwin-11
- GEM PATHS:
   - /Users/user/.rvm/gems/ruby-1.9.2-p290@app
   - /Users/user/.rvm/gems/ruby-1.9.2-p290@global
- GEM CONFIGURATION:
   - :update_sources => true
   - :verbose => true
   - :benchmark => false
   - :backtrace => false
   - :bulk_threshold => 1000
- REMOTE SOURCES:
   - http://rubygems.org/

Sonunda sistemimde bu hataları önlemek için bir neden / yol bulmayı başardım. Ben sadece salatalık ve salatalık raylarının 1.0.2 sürümüne döndüm. En son sürümleri kullanmak bunu yapıyordu ...


0

Bir gem'in en son sürümünü geçerli bir tarih formatıyla gem cleanup GEMNAMEkursanız bile, sonradan kurduğunuzdan emin olun , çünkü gemyine de eski kitaplıkların teknik özelliklerinden şikayet edeceksiniz.


0

Mücevherlerinizi yeniden yüklemek, bu biraz farklı makine durumlarının çoğunda çözüm olabilir.

Benim durumumda:

cd /Library/Ruby/Gems/1.8/specifications &&
sudo rm -rf *

Benim durumumda, diğer daha yaratıcı çözümler başarısız oldu.

Benim sorunum Invalid gemspeckokoapodları kullanmaya çalışırken oluyordu. Tekrar koştum gem install cocoapodsve her şey pembeydi.

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.