2011-03-16 10 views
14

tengo estos grupos en mi Gemfile:Cómo utilizar los condicionales en Gemfile

group :development, :test do 
    gem 'sqlite3' 
end 
group :production do 
    gem 'mysql' 
end 

El desarrollo de la máquina no tiene instalado MySQL, que es por eso que sólo he enumerado MySQL en el grupo de producción. Pero cuando trato de ejecutar los carriles en la máquina de desarrollo me sale esto:

$> RAILS_ENV=development ./script/rails 
Could not find gem 'mysql (>= 0, runtime)' in any of the gem sources listed in your Gemfile. 

Obviamente, podría solucionar este problema mediante la instalación de MySQL, pero me gustaría saber la solución correcta en lugar de instalar el software innecesario.

Respuesta

5

No es necesario tener la gema instalada. Bundler (el administrador de gemas subyacente para Rails) lo requiere para que puedas resolver conflictos potenciales de dependencias en el desarrollo en lugar de descubrir que tienes conflictos de gemas cuando pasas a la producción. Yehuda (constructor de Bundler) escribió una publicación en el blog, mira en la sección titulada "Consistencia".

http://yehudakatz.com/2010/05/09/the-how-and-why-of-bundler-groups/

2

hicieron volver a ejecutar "paquete de instalación" después de cambiar su Gemfile?

1

Simplemente ejecuta bundle install --without production

Cuestiones relacionadas