2010-10-14 15 views
9

Notre équipe utilise différentes bases de données pour l'autre, et nous utilisons Bundler donc notre Gemfile contient le connecteur du créateur repo db (mysql)conditionals à Gemfile

J'utilise pg et en raison d'une paresse peu et la peur de la rupture quelque chose, je ne veux pas utiliser mysql, alors je viens d'ajouter une gemme "pg" dans notre Gemfile. Bien sûr, puisque nous utilisons git, il apparaîtra toujours comme un fichier modifié, et nous utilisons tous le Gemfile pour que nous ne puissions pas le gitignorer ou le valider avec nos changements.

La question est, comment allons-nous à ce sujet? Y a-t-il un conditionnel dans bundler ou dois-je juste déclarer que j'utilise un certain gem un autre endroit?

Répondre

15

Depuis Gemfile, comme Rakefile, est juste un morceau de Ruby, vous pouvez jeter dans conditionals si vous pensez qu'il va vous simplifier la vie. Par exemple:

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

Parfois, vous devez le faire pour différentes versions Ruby 1,8 et 1,9 ont parfois besoin de gemmes différentes.

+0

qu'est-ce que Gem.available? faire? vérifie-t-il la disponibilité des gemmes dans votre source gem ou dans votre localhost? – corroded

+0

Il vérifie simplement s'il a déjà été installé, et non s'il est installable. Puisque vous pouvez créer vos propres fichiers .gem, il est techniquement possible d'installer un gem qui n'est pas disponible n'importe où. – tadman

+0

je vois je vois. Merci! – corroded