2011-09-15 5 views
10

Se ci sono due gemme, A e B. A1.0.0 dipende da B1.0.0.Posso forzare le dipendenze di una gemma in gemfile?

Nel mio Gemfile:

gem 'A', '~> 1.0.0' 

Quindi eseguire bundle. Si genererà un Gemfile.lock come:

A (1.0.0) 
    B (1.0.0) 

Ma se voglio forzare A utilizzare B1.0.1, qual è la migliore pratica? Inoltre, se lo B1.0.1 non è un rilascio ma un tag github?

risposta

12

Dovrai specificare esplicitamente la gemma B nel tuo Gemfile per utilizzare un repository git o un'altra versione. Finché A 1.0.0 è compatibile con B 1.0.1, starai bene. Se è compatibile solo con B 1.0.0, dovrai creare il tuo fork della gemma A e aggiornare la gemspec per essere compatibile con B 1.0.1 e quindi usare quel repository come gemma per A invece dei rubygems versione.

Ecco un Gemfile di esempio che dovrebbe darti quello che vuoi, purché A 1.0.0 sia compatibile con B 1.0.1.

gem 'B', :git => 'git://github.com/B/B.git', :tag => '1.0.1' 
gem 'A', '~> 1.0.0'