2011-05-21 6 views
8

Tengo un Rakefile que tiene este aspecto:sAjuste hasta rspec2 tarea en Rakefile

require 'rspec/core/rake_task' 

desc "Run all RSpec tests" 
RSpec::Core::RakeTask.new(:spec) 

Esto no está funcionando sin embargo. Por ejemplo, si trato de ejecutar "rake -T", obtengo:

code/projects/bellybuster[master]% rake -T --trace 
(in /Users/craig/code/projects/bellybuster) 
rake aborted! 
no such file to load -- rspec/core/rake_task 
/Users/craig/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
/Users/craig/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
/Users/craig/code/projects/bellybuster/Rakefile:1:in `<top (required)>' 
/Users/craig/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2383:in `load' 

¿Alguna idea?

En caso podría ser útil en este caso es la Gemfile:

source :rubygems 

gemspec 

Ah, y algunas versiones:

  • Ruby: 1.9.2p180
  • Rake: 0.8.7
  • Bündler: 1.0.13
  • RubyGems: 1.7.2
+5

Tengo exactamente el mismo problema. Aquí están mis pensamientos (estridencias): el sistema de administración de paquetes de Ruby está horriblemente roto. Estoy perdiendo el tiempo en este estúpido problema cuando debería escribir código. ¿Cómo en el mundo podría ser esto? Bundler y Gems están en el núcleo del ecosistema Ruby. Deben ser estables, simples y a prueba de balas. En cambio, se siente como un experimento gigante de piratas informáticos. Muy triste. –

Respuesta

8

La sintaxis se ve bien para mí. ¿Estás 100% seguro de que tienes rspec 2 instalado? ¿Aparece con gem which rspec? Tal vez se olvidó de ejecutar bundle install o no aparece rspec en el archivo .gemspec como una dependencia (de desarrollo)?

+0

Así es las partes pertinentes de la gemspec: s.add_development_dependency "rastrillo" s.add_development_dependency "rspec" s.files = 'git ls-files'.split ("\ n") s.test_files = 'git ls-files - {prueba, especificaciones, características}/*' .split ("\ n") s.require_paths = [ "lib"] y la lista joya da: *** joyas locales *** configuración (1.2.0) diff-lcs (1.1.2) github (0.6.2) highline (1.5.2) json_pure (1.5.1) launchy (0.3.7) minitest (1.6.0) rake (0.8.7) rdoc (2.5.8) rspec (2.6.0) rspec-núcleo (2.6.1) rspec-expectativas (2.6.0) rspec-burla (2.6.0) formato de texto (1.0.0) texto-guión (1.0.0) – codecraig

+0

Hmm, bueno, todo lo que puedo pensar es que a) rvm está usando un gemset diferente en el proyecto en el que estás trabajando y por lo tanto, realmente no tiene rspec, ob) te falta algo que ver con bundler. Asegúrate de que tienes el bundler 'require'/setup '; Bundler.setup (: default,: development) 'bit en la parte superior de su Rakefile y ejecute' bundle install' en el directorio del proyecto. Si esto no funciona, entonces reinstale rspec, o mejor aún, comience un [gemset nuevo para su proyecto] (http://beginrescueend.com/gemsets/creating/) y deje que bundler maneje toda la instalación de gemas. – arcresu

+0

Además, fuerce RSpec 2 con 's.add_development_dependency" rspec "," ~> 2.0 "' en '.gemspec' ya que RSpec 1 utilizó una ruta diferente para su tarea de Rake. Si aún no hay desarrollo, publique más de su Rakefile arriba porque realmente no hay muchos lugares donde el problema podría provenir de ... – arcresu

0

Acabo de deshabilitar mi carpeta de gemas existente y volví a instalar todo ejecutando bundle install. Eso resolvió el problema para mí.

6

¿Estás usando Heroku?

que tiene el mismo problema, encontró esta solución a The Fancy Manual:

## One common example using the RSpec tasks in your Rakefile. 
## If you see this in your Heroku deploy: 

$ heroku run rake -T 
Running `bundle exec rake -T` attached to terminal... up, ps.3 
rake aborted! 
no such file to load -- rspec/core/rake_task 

## Now you can fix it by making these Rake tasks conditional 
## on the gem load. For example: 

## Rakefile 

begin 
    require "rspec/core/rake_task" 

    desc "Run all examples" 
    RSpec::Core::RakeTask.new(:spec) do |t| 
    t.rspec_opts = %w[--color] 
    t.pattern = 'spec/*_spec.rb' 
    end 
rescue LoadError 
end 

## Confirm it works locally, then push to Heroku. 
1

¿Está utilizando Travis-CI? Me fijo moviendo 'rastrillo' de la gemspec a la Gemfile, es decir .:

source "https://rubygems.org" 

# Specify your gem's dependencies in pipboy.gemspec 
gemspec 

group :test do 
    gem 'rake' 
end 

No estoy seguro si es la solución correcta, pero funcionó para mí ..

Cuestiones relacionadas