2013-06-04 19 views
14

TL kurmak; DR:Eksik Dosya sonra

varolan git depo içinde paket çalıştırmayın. Herhangi bir hata mesajı olmadan garip şeyler olacak.

Orijinal Soru:

Ben bu eğitimde adımları uyarlayarak bir mücevher inşa ettik: Son adım olarak

http://net.tutsplus.com/tutorials/ruby/gem-creation-with-bundler/

, ben taş .gemspec inşa çalıştırmak

Bu başarılı olur, ancak ben gemiyi yüklediğimde, kritik dosyayı bulmam, kodumu içeren dosya, mücevherde bulunmuyor. Aynı (lib) dizindeki bir başka dosya "version.rb", gemide var.

Hata ayıklama işlemine nasıl başlayacağımı bilmiyorum ... gemide hangi dosyalara yer vereceğine bundler/gem build nasıl karar verir?

Düzenleme:

Benim iş akışı:

gem build <project_name>.gemspec 
gem unpack <project_name> 
=> confirm file does not exist in <unpacked>/lib/ 

gem install <project name> 
=> confirm file structure in ~/home/stefan/.rvm/... contains gem, but does not contain desired file 

Düzenleme 2/Çözünürlük:

Bir uzaktan için tüm kodu işlemekle tarafından bu çalışma almak için nihayet başardı depo, temiz bir klon yaratma ve gemiyi inşa etme. Yeni mücevher gerekli tüm dosyaları içeriyordu.

Biraz tarih ... Ben aslen kodu oluşturulan ve (bu benim ilk mücevher) bir mücevher yapmayı düşünüyorum önce işledi. Daha sonra, nolu orjinal havuzda, şikayet etmeyen orijinal bir depoda paketini kullandım, ama muhtemelen garipliğin sebebi de buydu.

+1

listelenecek ne dikkat etmelidir anlamına

gem.files = 'git ls-files'.split($/) 

Not: Bunu Git seslenmek ve bir dosya listesini oluşturmak için komutu ters tırnak kullanır .gemspec de görüyoruz sistemimde bir gem ile 'gem build project_name.gemspec kullanarak; gem openpack project_name-x.y.z.gem', yeni eklenen bir dosyayı dahil etmeli ve paketini açmalı ve normalde herhangi bir ek iş veya kontrol gerekmez. İş akışı açıklamanızdan beklenen davranıştan ne fark yaratabileceğini anlatamam. –

+0

Bu muhtemelen kafamı bir tuğla duvara yaslayarak 10 saatimi kurtardı. Stack Overflow'u seviyorum. – reedstonefood

cevap

22

Sizin için bundler'ın yaptığı şeylerden biri, mücevher kodunuzun sürümünü yönetmek için yerel bir git repo başlatmasıdır. Eğer

git add lib/gem_name/missing_file.rb 

Bundler oluşturulan taşlar içten taş için kaynak dosyalarının "üyelik" izlemek için git kullanmak Git dosyayı eklemiş olduğunu kontrol edin. Bu da size ben doğruladı .gitignore

+0

Dosya, git'ten eksik. Ancak şimdi ekledim ve gemiyi yeniden oluşturdum. Aynı sonuç. Dosyayı ve tüm test dosyamı gösteren bir tane ls dosyası da yaptım. Bunların hiçbiri gemiye dahil değildir. – Stefan

+1

Mücevher yüklemek için komisyon görevleri kullanıyor musunuz? 'rake install', yönetilen konumlar kullanarak bir 'gem build' ve 'gem install' yapar. gem build name.gemspec 'bir yükleme yapmaz, sadece' name-x.y.z oluşturur.Geçerli klasördeki mücevher ' –

+0

Soru iş akışı ile güncellendi. Tırmık kurulumunu hiç kullanmadım, ancak eminim ki, dosya – Stefan

İlgili konular