2012-03-12 11 views
20

Sé que esta pregunta se ha formulado de una forma u otra antes, pero todavía no puedo obtener una solución funcional para esto.Ruby on Rails - error al ejecutar pepino: Ya ha activado activesupport 3.2.1, pero su Gemfile requiere el soporte activo 3.1.0.

estoy tomando el curso Saas ofrecen en línea y el código se clona directamente de https://github.com/saasbook/hw3_rottenpotatoes

Cuando corro pepino desde la línea de comandos

Using the default profile... 
You have already activated activesupport 3.2.1, but your Gemfile requires activesupport 3.1.0. Using bundle exec may solve this. (Gem::LoadError) 
/Users/chemin/.rvm/gems/[email protected]/gems/bundler-1.0.21/lib/bundler/runtime.rb:31:in `block in setup' 
/Users/chemin/.rvm/gems/[email protected]/gems/bundler-1.0.21/lib/bundler/runtime.rb:17:in `setup' 
/Users/chemin/.rvm/gems/[email protected]/gems/bundler-1.0.21/lib/bundler.rb:110:in `setup' 
/Users/chemin/.rvm/gems/[email protected]/gems/bundler-1.0.21/lib/bundler/setup.rb:7:in `<top (required)>' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:59:in `require' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:59:in `rescue in require' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require' 
/Users/chemin/rails_projects/saas/hw3_rottenpotatoes/config/boot.rb:6:in `<top (required)>' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require' 
/Users/chemin/rails_projects/saas/hw3_rottenpotatoes/config/application.rb:1:in `<top (required)>' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require' 
/Users/chemin/rails_projects/saas/hw3_rottenpotatoes/config/environment.rb:2:in `<top (required)>' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-rails-1.3.0/lib/cucumber/rails.rb:7:in `<top (required)>' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:59:in `require' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:59:in `rescue in require' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require' 
/Users/chemin/rails_projects/saas/hw3_rottenpotatoes/features/support/env.rb:7:in `<top (required)>' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/rb_support/rb_language.rb:129:in `load' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/rb_support/rb_language.rb:129:in `load_code_file' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/runtime/support_code.rb:171:in `load_file' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/runtime/support_code.rb:83:in `block in load_files!' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/runtime/support_code.rb:82:in `each' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/runtime/support_code.rb:82:in `load_files!' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/runtime.rb:175:in `load_step_definitions' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/runtime.rb:40:in `run!' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/cli/main.rb:43:in `execute!' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/cli/main.rb:20:in `execute' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/bin/cucumber:14:in `<top (required)>' 
/Users/chemin/.rvm/gems/[email protected]/bin/cucumber:19:in `load' 
/Users/chemin/.rvm/gems/[email protected]/bin/cucumber:19:in `<main>' 

después de ejecutar bundle install versión consigo una aún mensaje más feo

Could not find rack-cache (~> 1.1) amongst [actionmailer-3.1.0, actionpack-3.1.0, activemodel-3.1.0, activerecord-3.1.0, activeresource-3.1.0, activesupport-3.1.0, addressable-2.2.7, archive-tar-minitar-0.5.2, arel-2.2.1, bcrypt-ruby-3.0.1, builder-3.0.0, capybara-1.1.2, childprocess-0.3.1, coffee-rails-3.1.1, coffee-script-2.2.0, coffee-script-source-1.2.0, columnize-0.3.6, cucumber-1.1.8, cucumber-rails-1.3.0, cucumber-rails-training-wheels-1.0.0, database_cleaner-0.7.1, diff-lcs-1.1.3, erubis-2.7.0, execjs-1.3.0, ffi-1.0.11, gherkin-2.8.0, haml-3.1.4, hike-1.2.1, i18n-0.6.0, jquery-rails-1.0.19, json-1.6.5, json_pure-1.6.5, launchy-2.0.5, libv8-3.3.10.4-x86_64-darwin-10, linecache19-0.5.12, mail-2.3.0, mime-types-1.17.2, multi_json-1.1.0, nokogiri-1.5.0, polyglot-0.3.3, rack-1.3.6, rack-cache-1.0.3, rack-mount-0.8.3, rack-ssl-1.3.2, rack-test-0.6.1, rails-3.1.0, railties-3.1.0, rake-0.9.2.2, rdoc-3.12, ruby-debug-base19-0.11.25, ruby-debug19-0.11.6, ruby_core_source-0.1.5, rubyzip-0.9.6.1, sass-3.1.15, sass-rails-3.1.5, selenium-webdriver-2.13.0, sprockets-2.0.3, sqlite3-1.3.5, term-ansicolor-1.0.7, therubyracer-0.9.10, thor-0.14.6, tilt-1.3.3, treetop-1.4.10, tzinfo-0.3.31, uglifier-1.2.3, xpath-0.1.4] (Gem::LoadError) 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:451:in `block in find_in_unresolved' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:451:in `map' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:451:in `find_in_unresolved' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:43:in `require' 
/Users/chemin/.rvm/gems/[email protected]/gems/bundler-1.0.21/lib/bundler/dsl.rb:1:in `<top (required)>' 
/Users/chemin/.rvm/gems/[email protected]/gems/bundler-1.0.21/lib/bundler/definition.rb:17:in `build' 
/Users/chemin/.rvm/gems/[email protected]/gems/bundler-1.0.21/lib/bundler.rb:138:in `definition' 
/Users/chemin/.rvm/gems/[email protected]/gems/bundler-1.0.21/lib/bundler.rb:126:in `load' 
/Users/chemin/.rvm/gems/[email protected]/gems/bundler-1.0.21/lib/bundler.rb:110:in `setup' 
/Users/chemin/.rvm/gems/[email protected]/gems/bundler-1.0.21/lib/bundler/setup.rb:7:in `<top (required)>' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:59:in `require' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:59:in `rescue in require' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require' 
/Users/chemin/rails_projects/saas/hw3_rottenpotatoes/config/boot.rb:6:in `<top (required)>' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require' 
/Users/chemin/rails_projects/saas/hw3_rottenpotatoes/config/application.rb:1:in `<top (required)>' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require' 
/Users/chemin/rails_projects/saas/hw3_rottenpotatoes/config/environment.rb:2:in `<top (required)>' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-rails-1.3.0/lib/cucumber/rails.rb:7:in `<top (required)>' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:59:in `require' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:59:in `rescue in require' 
/Users/chemin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require' 
/Users/chemin/rails_projects/saas/hw3_rottenpotatoes/features/support/env.rb:7:in `<top (required)>' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/rb_support/rb_language.rb:129:in `load' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/rb_support/rb_language.rb:129:in `load_code_file' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/runtime/support_code.rb:171:in `load_file' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/runtime/support_code.rb:83:in `block in load_files!' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/runtime/support_code.rb:82:in `each' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/runtime/support_code.rb:82:in `load_files!' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/runtime.rb:175:in `load_step_definitions' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/runtime.rb:40:in `run!' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/cli/main.rb:43:in `execute!' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/lib/cucumber/cli/main.rb:20:in `execute' 
/Users/chemin/.rvm/gems/[email protected]/gems/cucumber-1.1.9/bin/cucumber:14:in `<top (required)>' 
/Users/chemin/.rvm/gems/[email protected]/bin/cucumber:19:in `load' 
/Users/chemin/.rvm/gems/[email protected]/bin/cucumber:19:in `<main>' 

Respuesta

39

Hay un par de soluciones, la más fácil de las cuales sería intentar ejecutar bundle exec cucumber primero, y mira si eso resuelve tu problema.

Si eso no funciona, elimine su gemset rails3tutorial y volver a crear de nuevo:

rvm gemset delete rails3tutorial 
rvm [email protected] --create 

A continuación, ejecute bundle, y es de esperar que se instalará sus gemas para usted. Siga esto con bundle exec cucumber (casi siempre ejecuto mis especificaciones y cukes usando bundle exec para que no intente cargar accidentalmente gemas obsoletas).

¡Espero que esto funcione!

ACTUALIZACIÓN: Explicando bundle exec un poco más

bundle exec es un comando que viene con bundler que se ejecutará cualquier otro comando en el contexto de su Gemfile. En este caso, básicamente le está diciendo que ejecute el comando cucumber pero solo con las gemas de su Gemfile, y no con todas las gemas actualmente disponibles.

Por ejemplo, si ha instalado previamente activesupport 3.2.1, y su Gemfile pregunta por activesupport 3.1.0. Cuando esto sucede, creo que el comando pepino atrae 'soporte activo' (tal vez a través de la llamada require 'cucumber/rails' en env.rb) que toma cualquier versión aleatoria de soporte activo que pueda (supongamos que agarra 3.2.1) de tus gemas disponibles. Después de esto, decide cargar su entorno de rieles para comenzar a ejecutar sus características. Cuando comienza a cargar su aplicación real, el código mira su archivo Gemfile.lock y ve que lo que realmente quiere es activesupport 3.1.0, pero no puede cargar una versión anterior sobre una nueva versión, por lo que se bloquea con el error James Lin pegado.

Por esta razón, si está utilizando rvm, es una buena idea mantener gemas separadas para sus proyectos por separado, y eliminar/volver a crear las gemas si está actualizando sus gemas en ese proyecto para que no lo haga Mantenga las versiones antiguas de las gemas. Alternativamente, bundle exec tiende a resolver el 99% de los problemas también. Si no está utilizando rvm y tiene múltiples proyectos, entonces probablemente tenga muchas versiones diferentes de gemas diferentes, y siempre debe usar bundle exec para hacer cosas como ejecutar tareas de rake, ejecutar funciones de pepino y otras pruebas de unidades, etc.

+1

Gracias ejecutando bundle exec pepino trabajado! –

+0

¿Puede explicarnos cuál es la diferencia entre "pepino" y "paquete ejecutivo de pepino"? – coelhudo

+0

@coelhudo Puse la explicación al final de mi respuesta :) – nzifnab

3

O puede hacer bundle update para asegurarse de que todos sus complementos de gemas sean la versión más nueva y actualizará su Gemfile.lock, por lo que esos dos serán consistentes.

supongo que la diferencia entre bundle exec y bundle update es si desea agrupar proporcionar la versión de su aplicación para solicitar o actualizar su Gemfile aplicación para que la aplicación no insistiría una versión obsoleta de la joya cuando instala una versión más nueva y causar problema porque el archivo gema

Porque cuando ocurre un conflicto de versión, generalmente es una buena idea asegurarse de que lo que está instalado en su sistema sea coherente con su aplicación Gemfile o archivo de bloqueo ya que no quiere que intenten usar una versión anterior de gema cuando La versión más nueva está disponible, a menos que desee congelar su sistema de gemas usando rvm o similar a nivel de aplicación, pero nuevamente, cuando distribuye su aplicación Ruby, puede causar problemas en otras máquinas.

Al final, debido a la necesidad de distribuir su aplicación, a menos que la nueva versión del archivo gem no funcione con la aplicación existente, creo que no debería insistir en una versión obsoleta conocida, a menos que siempre desee mantener en el lado seguro, que es un argumento válido.

Cuestiones relacionadas