Scenario: Sto sviluppando una gemma gem-foo
, utilizzando Bundler. Ho una dipendenza su gem-bar
, che ho verificato in locale per lo sviluppo. Posso dichiarare questa dipendenza nella Gemfile
come:Come posso utilizzare la regola "gemspec" in Bundler, mentre utilizzo ancora un checkout locale di una gemma?
gem "gem-bar", :path => "/path/to/local/gem-bar"
Tuttavia, quando si sviluppa un gioiello della "best practice" sembra essere quello di definire le gemme richiesti nel gem-foo.gemspec
via:
s.add_runtime_dependency 'gem-bar'
e poi semplicemente includere le dipendenze nel Gemfile
utilizzando:
gemspec
Quello che vorrei fare è aggiungere la dipendenza runtime sulla gemma nel gemspec, ma apportare alcune modifiche locali a gem-bar
e un bundle install
utilizzare il checkout di sviluppo locale. Supponiamo che io controlli entrambe le gemme e vi stia intromettendo un po 'simultaneamente, e spingo le nuove versioni simultaneamente. I potrebbe solo commentare il s.add_runtime_dependency
nel gemspec e aggiungerlo con il percorso locale nel Gemfile, ma che si sente ... incline agli errori? La gemspec dovrebbe dichiarare questa dipendenza sempre e Gemfile dovrebbe essere in grado di sovrascrivere la posizione che Bundler dovrebbe utilizzare per la gemma. Tuttavia, se effettivamente esegue questa operazione, si ottiene il seguente errore:
You cannot specify the same gem twice coming from different sources. You specified that gem-bar (>= 0) should come from an unspecfied source and source at /path/to/local/gem-bar
Idealmente, vorrei solo hanno una sorta di esclusione locale, dal momento che non voglio mai il caso in cui spingo accidentalmente il gioiello con l'esigenza di un locale gem-bar
in un percorso specifico. Sarebbe stupido.
Qualcuno ha una buona soluzione a questo caso d'uso?
Per installare su "fornitore/pacchetto", fare 'bundle install --path vendor/bundle'. Una volta installato lì e hai un Gemfile.lock, puoi anche usare 'bundle install --deployment' per ambienti non di sviluppo. – Brett
Ok! Questo è quello che ricordo. Grazie. Ero stanco quando l'ho pubblicato e l'ho usato solo poche volte. Sto solo indagando su Rbenv in questi giorni. Sembra essere abbastanza semplice. Yehuda Katz ha scritto alcune cose piuttosto buone su quale strada prendere con questo problema. Le migliori pratiche come lo sviluppo di gemme e tutto. –