2010-10-14 20 views
9

Il nostro team utilizza diversi database per l'altro, e che stiamo usando bundler quindi il nostro Gemfile contiene connettore DB del creatore di pronti contro termine (mysql)condizionali in Gemfile

Sto usando pg ed a causa di una pigrizia po 'e la paura di rompere qualcosa, non voglio usare mysql, quindi aggiungo una gemma "pg" nel nostro Gemfile.

Naturalmente, dal momento che stiamo usando git, verrà sempre visualizzato come un file modificato, e tutti usiamo il Gemfile in modo che non possiamo gitignarlo o commetterlo con le nostre modifiche.

La domanda è: come andiamo su questo? C'è un condizionale in bundler o devo solo dichiarare che sto usando una certa gemma da qualche altra parte?

risposta

15

Dal Gemfile, come Rakefile, è solo un pezzo di Ruby, si può buttare in condizionali se si pensa che semplificherà la vita. Per esempio:

if (Gem.available?('pg')) 
    gem 'pg' 
else 
    gem 'mysql2' 
end 

a volte si deve fare questo per diverse versioni di Ruby come 1,8 e 1,9 volte hanno bisogno di diverse gemme.

+0

cosa significa Gem.available? fare? controlla la disponibilità delle gemme nella tua fonte gemma o nel tuo localhost? – corroded

+0

Controlla semplicemente se è già stato installato, non se è installabile. Dato che puoi creare i tuoi file .gem, è tecnicamente possibile installare una gemma che non è disponibile da nessuna parte. – tadman

+0

vedo che vedo. Grazie! – corroded