2010-10-14 12 views
9

Nuestro equipo utiliza diferentes bases de datos para el uno al otro, y que están utilizando bundler por lo que nuestro Gemfile contiene conector DB del creador de recompra (MySQL)condicionales en Gemfile

estoy usando pg y debido a la pereza bits y el miedo de romper algo, no quiero usar mysql, así que solo agrego una gema "pg" en nuestro Gemfile.

Por supuesto, dado que estamos usando git, siempre se mostrará como un archivo modificado, y todos usaremos el Gemfile para que no podamos gitignore o cometerlo con nuestros cambios.

La pregunta es, ¿cómo hacemos? ¿Hay un paquete condicional o simplemente tengo que declarar que estoy usando una determinada joya en otro lugar?

Respuesta

15

Desde Gemfile, como Rakefile, es sólo un trozo de Rubí, se puede tirar en los condicionales si usted piensa que va a simplificar su vida. Por ejemplo:

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

A veces tienes que hacer esto para diferentes versiones de Ruby, ya que 1.8 y 1.9 a veces necesitan gemas diferentes.

+0

¿Qué ofrece Gem.available? ¿hacer? ¿Verifica la disponibilidad de gemas en tu fuente de gemas o en tu servidor local? – corroded

+0

Simplemente comprueba si ya se ha instalado, no si es instalable. Ya que puedes crear tus propios archivos .gem, es técnicamente posible instalar una gema que no está disponible en ninguna parte. – tadman

+0

veo que veo. ¡Gracias! – corroded