2011-11-12 20 views
15

Cada vez que ejecuta un comando rake (es decir rake routes) me sale este error:¿Por qué mi entorno requiere que ejecute bundle exec?

You have already activated rake 0.9.2.2, but your Gemfile requires rake 0.9.2. Using bundle exec may solve this. 

Si me quedo bundle exec rake routes funciona.

Quiero poder simplemente rake routes sin tener que ejecutar bundle exec rake routes.

He mirado en otras preguntas con errores similares y trató de las diferentes soluciones (como correr bundle update) fue en vano.

Además, en mi gemfile he especificado gem 'rake', '0.9.2'

¿Alguna sugerencia?

+0

Actualización rápida. Recientemente encontré esta explicación de RailsTutorial con respecto a la necesidad de utilizar 'bundle exec':" Como se mencionó brevemente en la Sección 3.2.1, es necesario en general prefijar comandos como rake o rspec con bundle exec para que los programas se ejecuten en la forma exacta entorno de gema especificado por Gemfile. (Por razones técnicas, la única excepción a esto es el propio comando de rieles.) "Además," Siempre que el número de versión de RVM sea 1.11.xo superior, las gemas instaladas se ejecutarán automáticamente en el Entorno de Bundler, "por lo tanto no requiere el prefijo' bundle exec'. – mmichael

+0

enlace a la explicación: http://ruby.railstutorial.org/chapters/static-pages#sec-eliminating_bundle_exec – mmichael

Respuesta

8

intenta ejecutar:

gem list 

Probablemente va a ver un par de versión instalada de rastrillo. Por cierto, bundle exec es la manera correcta de ejecutar el código en el contexto de una aplicación de rieles, ver this para una buena explicación. Por lo tanto, puede usar un alias para escribir menos.

+2

Puede también acaba de comenzar su sesión de shell con 'RUBYOPT exportación = -rbundler/setup', que es todo lo que 'bundle exec' hace. – yfeldblum

+0

Esto fue muy informativo, gracias. – mmichael

+1

que me da: Ruby: No existe el fichero a cargar - bundler/configuración (LoadError) –

2

En caso de que use rvm. puede intentar siguiendo

rvm gem list 
2

Como @lucapette dijo, usted probablemente tiene múltiples versiones de rastrillo. Suponiendo que desea usar 0.9.2, puede eliminar la versión 0.9.2.2 para deshacerse de la advertencia y luego ejecutar bundle install para asegurarse de tener todas las versiones de gemas correctas para la versión que desea (0.9.2 en su caso, 0.8.7 en mi ejemplo a continuación).

Estos son los pasos:

$ gem list 

*** LOCAL GEMS *** 

... 
rake (0.9.2.2, 0.8.7) 
... 

$ gem uninstall rake 

Select gem to uninstall: 
1. rake-0.8.7 
2. rake-0.9.2.2 
3. All versions 
> 2 

You have requested to uninstall the gem: 
     rake-0.9.2.2 
addressable-2.2.6 depends on [rake (>= 0.7.3)] 
... 
If you remove this gems, one or more dependencies will not be met. 
Continue with Uninstall? [Yn] Y 
Successfully uninstalled rake-0.9.2.2 
INFO: gem "0.9.2.2" is not installed 

$ bundle install 
0

puede ver este mensaje si algunas de las joyas en sus Gemfile requieren una versión anterior del rastrillo a la que se ha instalado. Quizás hayas actualizado el rake. A menudo puedes arreglarlo actualizando tus gemas. Ejecutar:

bundle update 

Esto actualizará su paquete utilizando las gemas más recientes en su gemfile. Esto probablemente arreglará la incompatibilidad del rastrillo.

Cuestiones relacionadas