2011-06-02 11 views
8

He heredado una antigua aplicación Rails2.3. Es muy complejo y tiene (shock, horror) sin pruebas de ningún tipo. Estoy acostumbrado a rspec y pepino, así que pensé que comenzaría a trabajar para obtener las especificaciones y características definidas para la eventual (larga distancia) actualización a Rails 3. Es más fácil actualizar si sé exactamente lo que fallará.no se ha descargado ese archivo - rspec/matchers - rspec-rails, shoulda, pepino, factory girl, Rails2.3.10

De todos modos, me resultó muy difícil encontrar recursos en Internet que mostraran cómo configurar rspec, pepino, fábrica y debería en un entorno de rieles 2.3. Mi paquete es el siguiente:

source "http://rubygems.org" 

# Production gems 
gem "rails", "2.3.10" 
gem "nokogiri", "1.4.4" 
gem "mysql", "~> 2.8.1" 

group :development do 
    # bundler requires these gems in development 
    gem 'rspec',   '1.3.2' 
    gem 'rspec-core',  '2.5.2' 
    gem 'rspec-rails', '1.3.4' 
end 

group :test do 
    # bundler requires these gems while running tests 
    gem 'cucumber-rails', '0.4.1' 
    gem 'factory_girl' 
    gem 'shoulda',  '2.11.3' 
    gem 'shoulda-matchers' 
end 

Cuando voy a correr

bundle exec rspec spec, 

me sale el siguiente StackTrace de la debería:

/Users/sys/src/proj/rails/ruby/1.8/gems/shoulda-2.11.3/lib/shoulda/integrations/rspec2.rb:8: no such file to load -- rspec/matchers (MissingSourceFile) 
    from /Users/sys/src/proj/vendor/rails/activesupport/lib/active_support/dependencies.rb:184:in `require' 
    from /Users/sys/src/proj/vendor/rails/activesupport/lib/active_support/dependencies.rb:184:in `require' 
    from /Users/sys/src/proj/rails/ruby/1.8/gems/shoulda-2.11.3/lib/shoulda.rb:4 
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.14/lib/bundler/runtime.rb:68:in `require' 
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.14/lib/bundler/runtime.rb:68:in `require' 
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.14/lib/bundler/runtime.rb:66:in `each' 
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.14/lib/bundler/runtime.rb:66:in `require' 
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.14/lib/bundler/runtime.rb:55:in `each' 
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.14/lib/bundler/runtime.rb:55:in `require' 
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.14/lib/bundler.rb:120:in `require' 
    from /Users/sys/src/proj/config/boot.rb:119:in `load_gems' 
    from /Users/sys/src/proj/config/../vendor/rails/railties/lib/initializer.rb:164:in `process' 
    from /Users/sys/src/proj/config/../vendor/rails/railties/lib/initializer.rb:113:in `send' 
    from /Users/sys/src/proj/config/../vendor/rails/railties/lib/initializer.rb:113:in `run' 
    from /Users/sys/src/proj/config/environment.rb:12 
    from /Users/sys/src/proj/spec/spec_helper.rb:4:in `require' 
    from /Users/sys/src/proj/spec/spec_helper.rb:4 
    from /Users/sys/src/proj/spec/models/announcement_spec.rb:1:in `require' 
    from /Users/sys/src/proj/spec/models/announcement_spec.rb:1 
    from /Users/sys/src/proj/rails/ruby/1.8/gems/rspec-core-2.5.2/lib/rspec/core/configuration.rb:386:in `load' 
    from /Users/sys/src/proj/rails/ruby/1.8/gems/rspec-core-2.5.2/lib/rspec/core/configuration.rb:386:in `load_spec_files' 
    from /Users/sys/src/proj/rails/ruby/1.8/gems/rspec-core-2.5.2/lib/rspec/core/configuration.rb:386:in `map' 
    from /Users/sys/src/proj/rails/ruby/1.8/gems/rspec-core-2.5.2/lib/rspec/core/configuration.rb:386:in `load_spec_files' 
    from /Users/sys/src/proj/rails/ruby/1.8/gems/rspec-core-2.5.2/lib/rspec/core/command_line.rb:18:in `run' 
    from /Users/sys/src/proj/rails/ruby/1.8/gems/rspec-core-2.5.2/lib/rspec/core/runner.rb:55:in `run_in_process' 
    from /Users/sys/src/proj/rails/ruby/1.8/gems/rspec-core-2.5.2/lib/rspec/core/runner.rb:46:in `run' 
    from /Users/sys/src/proj/rails/ruby/1.8/gems/rspec-core-2.5.2/lib/rspec/core/runner.rb:10:in `autorun' 
    from /Users/sys/src/proj/rails/ruby/1.8/bin/rspec:19 

Google para que el error proporciona alarmantemente algunos golpes .. . No estoy seguro de lo que he hecho mal?

Extracción rspec-core da: spec exec rspec

haz/modelos/announcement_spec.rb /Users/sys/.rvm/gems/[email protected]/gems/bundler-1.0 .14 ​​/ lib/bundler/rubygems_integration.rb: 143: en `gema ': rspec-core no es parte del paquete. Agrégalo a Gemfile. (Gem :: LoadError)

contenido del opt/local/bin/rspec

cat /opt/local/bin/rspec 
#!/usr/bin/env ruby 
# 
# This file was generated by RubyGems. 
# 
# The application 'rspec-core' is installed as part of a gem, and 
# this file is here to facilitate running it. 
# 

require 'rubygems' 

version = ">= 0" 

if ARGV.first =~ /^_(.*)_$/ and Gem::Version.correct? $1 then 
    version = $1 
    ARGV.shift 
end 

gem 'rspec-core', version 
load Gem.bin_path('rspec-core', 'rspec', version) 

Me pregunto si esto está en conflicto con otros de rspec he instalado (He instalado una aplicación Rails3, también con bundler/rvm) ... No estoy seguro de por qué rspec se está ejecutando fuera de opt/local/bin y no del paquete, aunque ...

Respuesta

11

me encontré con este mismo problema. Después de buscar todos los comandos rspec binarios (varias ubicaciones), tardé en darme cuenta de que la rama 1.3.2 de RSPEC titula su "especificación" binaria y no "rspec".

Así que los comandos correctos siempre fueron "bundle exec spec spec/models/..." Poner "rspec" significaba que bundler no pudo encontrarlo en mi rvm/gemset actual y comenzó a buscar en toda mi ruta, eventualmente surgió con una copia/opt/local/bin que pertenecía a una instalación de rspec2.x.

Es posible que un alias le permita a rspec 1.3.2 responder también al comando "rspec", pero ese no fue el caso para mí. El uso de "especificaciones" fue 100% confiable para evitar esa llamada de rspec-core y otros módulos 2.x.

Gracias por la pregunta y todas las investigaciones anteriores. Charles

1

Parece rspec-core, que es de una versión de rspec que solo admite Rails 3, puede ser el problema. Intente desinstalarlo y eliminarlo de su Gemfile.

Para la comparación, aquí está una sección de nuestra Gemfile que funciona bien para Rails 2.3:

group :development, :local, :test do            
    gem "rspec",    "= 1.3.1"            
    gem "rspec-rails",  "= 1.3.3"            
    gem "factory_girl",  "= 1.3.3"            
    gem "webrat",    "= 0.7.3"            
    gem "shoulda",   "= 2.11.3"           
end   
+0

Si elimino rspec-core, obtengo: /Library/Ruby/Gems/1.8/gems/bundler-1.0.14/lib/bundler/rubygems_integration.rb: 143: en 'gema ': rspec-core no es parte del paquete. Agrégalo a Gemfile. (Gem :: LoadError) \t desde /Users/sys/src/proj/rails/ruby/1.8/bin/rspec:18 –

+0

Intenté desinstalar todas las gemas rspec, poniendo solo las 2 gemas anteriores en tu Gemfile, y ejecutando la instalación del paquete. – Mori

+0

Todavía causa problemas. Sin embargo, ahora se está quejando de que el archivo está en \t desde/opt/local/bin/rspec: 18 ... ¿cuál es el contenido del archivo de esa secuencia de comandos? –

1

A bundle update rspec-rails solucionó este problema en los rieles 3.1.

Cuestiones relacionadas