2011-05-21 43 views
8

Ssetting了rspec2的任务,我有一个Rake文件看起来像这样:在Rake文件

require 'rspec/core/rake_task' 

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

这不,虽然工作。例如,如果我尝试运行“耙 - T”,我得到:

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' 

有什么想法?

在情况下,它可能会有所帮助,这里的Gemfile中:

source :rubygems 

gemspec 

哦和一些版本:

  • 红宝石:1.9.2p180
  • 耙:0.8.7
  • 捆扎机: 1.0.13
  • RubyGems:1.7.2
+5

我有完全一样的问题。这是我的想法(咆哮):Ruby的包管理系统非常糟糕。当我应该编写代码时,我在这个愚蠢的问题上浪费时间。这在世界上怎么可能? Bundler和Gems是Ruby生态系统的核心。他们应该稳定,简单和防弹。相反,它感觉就像一个巨大的黑客实验。很伤心。 – 2011-05-23 18:22:58

回答

8

语法对我来说很好。您是否100%确定您已安装rspec 2?它是否与gem which rspec一起出现?也许你忘了运行bundle install或者你没有在.gemspec文件中列出rspec作为(开发)依赖项?

+0

下面是来自gemspec的相关部分: s.add_development_dependency “耙” s.add_development_dependency “rspec的” s.files ='GIT中LS-files'.split( “\ n” 个) s.test_files = 'git的LS-文件 - {测试,规格,特性}/*'.split( “\ n” 个) s.require_paths = [ “LIB”] 和宝石列表给出: *** LOCAL GEMS *** 配置(1.2.0) diff-lcs(1.1.2) github(0.6.2) highline(1.5.2)(1.6.8) rdoc(2.5.8) rspec(2.6。(2.6.0) rspec-mocks(2.6.0) text-format(1.0.0) text-hyphen(1.0.0) – codecraig 2011-05-21 12:31:02

+0

嗯,所有我能想到的是a)rvm在你正在开发的项目中使用不同的gemset,所以它没有真正的rspec,或者b)你错过了一些与bundler相关的东西。确保你已经有了'require'bundler/setup'; Bundler.setup(:default,:development)'位于Rakefile的顶部,并在项目目录中运行'bundle install'。如果这不起作用,那么重新安装rspec,或者更好的是,从你的项目开始(http://beginrescueend.com/gemsets/creating/),让bundler处理所有安装的gem。 – arcresu 2011-05-22 10:21:32

+0

此外,由于RSpec 1为其Rake任务使用了不同的路径,因此在'.gemspec'中强制RSpec 2具有's.add_development_dependency“rspec”,“〜> 2.0”'。如果还没有开发,那么在上面发布更多的Rakefile,因为实际上没有很多地方可能会出现问题... – arcresu 2011-05-22 10:29:01

0

我刚刚烧毁了我现有的gem文件夹,并通过运行bundle install重新安装了所有内容。这解决了我的问题。

6

你在使用Heroku吗?

我得到了同样的问题,发现在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

是否使用特拉维斯-CI?我固定它通过移动从gemspec到的Gemfile“耙”,即:

source "https://rubygems.org" 

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

group :test do 
    gem 'rake' 
end 

不知道这是正确的解决方案,但它为我工作..