2013-06-04 12 views
14

TL; DR:Brakujący Plik w Gem po Budowanie

Nie uruchomić pakiet w ramach istniejącego repozytorium git. Dziwne rzeczy zdarzą się bez żadnych komunikatów o błędach.

oryginalne pytanie:

I został zbudowany gem poprzez dostosowanie czynności w tym tutorialu:

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

W końcowym etapie, Zabrakło mi gem budować .gemspec

To się udaje, ale kiedy zainstaluję klejnot, znajduję plik krytyczny, ten, który zawiera mój kod, nie jest w klejnocie. Kolejny plik w tym samym katalogu (lib), "version.rb", istnieje w klejnocie.

nie wiem jak rozpocząć debugowanie to ... skąd Bundler/gem budować zdecydować, które pliki zawierają w gem?

Edit:

Mój workflow:

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 

Edycja 2/Uchwała:

I była w stanie uzyskać tej pracy popełniając całą moją kod do pilota repozytorium, tworząc czysty klon i budując klejnot. Nowy klejnot zawierał wszystkie wymagane pliki.

Trochę historii ... Ja pierwotnie stworzony kod i zobowiązał go przed myśleć o zrobieniu gem (to mój pierwszy gem). Następnie użyłem pakietu wewnątrz oryginalnego repozytorium, które nie narzekało, ale prawdopodobnie było przyczyną dziwactwa.

+1

I potwierdziły z klejnotem w moim systemie, który używa 'gem build project_name.gemspec; gem unpack project_name-x.y.z.gem' powinien dołączyć i rozpakować ostatnio dodany plik i nie są wymagane żadne dodatkowe prace ani kontrole. Nie mogę stwierdzić z Twojego opisu przepływu pracy, co może powodować różnicę w stosunku do oczekiwanego zachowania. –

+0

To prawdopodobnie zaoszczędziło mi 10 godzin walenia głową w mur. Uwielbiam Stack Overflow. – reedstonefood

Odpowiedz

22

Jedną z rzeczy, które zrobił dla ciebie bundler, jest uruchomienie lokalnego repozytorium git do wersji-zarządzaj swoim kodem gem. Sprawdź, czy plik został dodany w git

git add lib/gem_name/missing_file.rb 

Bundler generowane wewnętrznie git perełki wykorzystać do śledzenia „członkostwa” plików źródłowych dla gem. Można to zobaczyć w .gemspec gdzie używa odwrócone, pojedyncze apostrofy wołać do git i wygenerować listę plików:

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

Uwaga Oznacza to również należy zwrócić uwagę na to, co wymienione w .gitignore

+0

Brak pliku w git. Jednak dodałem go i przebudowałem klejnot. Ten sam wynik. Zrobiłem też plik git ls, który pokazuje plik i wszystkie moje pliki testowe. Żaden z nich nie jest zawarty w klejnocie. – Stefan

+1

Czy używasz zadań rake do zainstalowania gem? 'rake install' robi' gem build' i 'gem install' używając zarządzanych lokalizacji. 'gem build name.gemspec' nie wykonuje instalacji, po prostu tworzy' name-x.y.z.gem' w bieżącym folderze –

+0

Pytanie zaktualizowane o workflow. Nigdy nie używałem instalacji rake, ale jestem pewien, że plik nie istnieje w oryginalnym klejnocie przed instalacją. – Stefan

Powiązane problemy