2010-12-19 13 views
9

He usado pepino sin problemas con Rails 3 por un tiempo, pero después de un montón retoques de hoy (incluyendo la limpieza de la gema), me sale el siguiente error siempre que corro "características de pepino"Problema de Rails 3/Cucumber: "... ya se activó el constructor 3.0.0, pero tu Gemfile requiere el constructor 2.1.2"

ya ha activado constructor 3.0.0, pero su Gemfile requiere constructor 2.1.2. Considere usar el paquete exec. (Gem :: LoadError)

Lo he probado en varios proyectos de rieles en mi máquina; todo se ve afectado. No estoy muy seguro de cómo abordar este: intenté instalar 2.1.2 & y lo especifiqué en el archivo gem, pero no me gustó.

"bundle exec cucumber features" funciona, pero no parece funcionar muy bien con autotest.

Cualquier sugerencia con respecto a lo que he hecho (y mejor aún cómo solucionarlo) la aprecié mucho.

Respuesta

17

Parece que después de su limpieza de gemas, el constructor se ha eliminado y luego se instaló la última versión (3.0.0). Pero los rails3 y algunas otras gemas requieren ~> 2.1.2, lo que significa que la versión del compilador debe ser> = 2.1.2 y < 3.0.0. Así que hay que eliminar de sus gemas 3.0.0 del sistema:

gem uninstall builder 

Uso sudo si es necesario.

Luego, en su proyecto:

bundle install 

NOTA: Si puso un constructor de forma manual en su Gemfile, asegúrese de que usted pone ~> 2.1.2. De lo contrario bundler intentará instalar la última versión estable (3.0.0), que no es compatible con la versión actual de los carriles y otras gemas populares:

gem "builder", "~> 2.1.2" 

yo recomendaría que le permite almacenar joyas en lugares separados para cada proyecto:

bundle install --path .gems 

en este caso se puede hacer todo lo que quiera con sus gemas del sistema y reducirá el riesgo de ponerse en situación como lo hace ahora.

6

¿Por qué no utilizar de la manera más simple?

bundle exec cucumber features

tuve el mismo problema con el constructor y algunas otras gemas. Intenté usar el modo "unistall de gemas" pero luego recibí un error al decir que necesitaba la gema más nueva. Así que estaba en un punto muerto.

Con el comando anterior funcionó ...

+0

Esto parece algo así como una mejor respuesta ... ¿No sería mejor, sin embargo, para hacer el pepino inherentemente consciente de 'Gemfile.lock', por lo que uno todavía puede usar la otra línea de comando * y * tener 3.0.0 instalado en el sistema? Tener 'require 'bundler/setup'' allí parece ser la forma correcta de hacerlo, según http://gembundler.com/rationale.html#setting-up-your-application-to-use-bundler - - si alguien quiere enviar un parche a https://github.com/aslakhellesoy/cucumber, hazlo. :) Si no se ha hecho cuando estoy listo para enviar una solicitud de extracción de otra cosa que estoy haciendo, lo haré. – lindes

Cuestiones relacionadas