$ bundle exec rake db: migrate
Utiliza la versión de rake especificada en el Gemfile para ejecutar la tarea de rake db:migrate
.
¡Pero no hay ninguna gema de comisión especificada en el Gemfile!
Sí, pero se instaló una gema de rastrillo como dependencia de alguna otra gema: busque en Gemfile.lock. Entonces la regla debe ser: Usa la versión de rake especificada en Gemfile.lock.
Pero Gemfile.lock no especifica una versión específica, ¡especifica una versión mayor que xy!
Entonces la regla debe ser: Utiliza la versión de rake que se instaló en el conjunto de gemas actual.
$ rake db: migrate
Normalmente, cuando emite un comando en la línea de comandos, por ejemplo, rake, su sistema busca el comando en la lista de directorios especificados en su variable de entorno PATH. El primer directorio que contiene el comando es la versión del comando que se utiliza. Para ver qué directorio es, puede hacer:
$ which rake
Entonces, si ejecuta,
$ rake db:migrate
que puede usar una gema de rastrillo diferente a la que instaló bundle install
. Pero, incluso si su sistema encuentra la misma versión de rastrillo que bundle exec
, cualquier gema requerida por el código fuente de rastrillo se buscará en lugares fuera del conjunto de gemas de su proyecto. Por lo tanto, hay muchas formas en las que simplemente:
$ rake db:migrate
puede arruinar las cosas.
De acuerdo con el libro de tutoriales de Ruby on Rails (gratis en línea), sección 3.6, si está utilizando rvm 1.11.x +, entonces no necesita comenzar los comandos con bundle exec
.