2011-05-21 22 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 

不知道這是正確的解決方案,但它爲我工作..