2011-03-23 81 views
0

我通过耙子使用黄瓜,发现自己重复代码时,黄瓜额外的任务。有没有一种方法来简化/瘦下来如下:清理耙黄瓜任务

... 
    namespace :cucumber do 
    Cucumber::Rake::Task.new({:ok => 'db:test:prepare'}, 'Run features that should pass') do |t| 
     t.binary = vendored_cucumber_bin # If nil, the gem's binary is used. 
     t.fork = true # You may get faster startup if you set this to false 
     t.profile = 'default' 
    end 

    Cucumber::Rake::Task.new({:report => 'db:test:prepare'}, 'Run features that should pass') do |t| 
     t.binary = vendored_cucumber_bin # If nil, the gem's binary is used. 
     t.fork = true # You may get faster startup if you set this to false 
     t.profile = 'report' 
    end 

    Cucumber::Rake::Task.new({:report_pdf => 'db:test:prepare'}, 'Run features that should pass') do |t| 
     t.binary = vendored_cucumber_bin # If nil, the gem's binary is used. 
     t.fork = true # You may get faster startup if you set this to false 
     t.profile = 'report_pdf' 
    end 

    Cucumber::Rake::Task.new({:wip => 'db:test:prepare'}, 'Run features that are being worked on') do |t| 
     t.binary = vendored_cucumber_bin 
     t.fork = true # You may get faster startup if you set this to false 
     t.profile = 'wip' 
    end 

    Cucumber::Rake::Task.new({:new => 'db:test:prepare'}, 'Run all new features that are being worked on') do |t| 
     t.binary = vendored_cucumber_bin 
     t.fork = true # You may get faster startup if you set this to false 
     t.profile = 'new' 
    end 

    Cucumber::Rake::Task.new({:new_report => 'db:test:prepare'}, 'Run all new features that are being worked on') do |t| 
     t.binary = vendored_cucumber_bin 
     t.fork = true # You may get faster startup if you set this to false 
     t.profile = 'new_report' 
    end 

    Cucumber::Rake::Task.new({:new_report_pdf => 'db:test:prepare'}, 'Run all new features that are being worked on') do |t| 
     t.binary = vendored_cucumber_bin 
     t.fork = true # You may get faster startup if you set this to false 
     t.profile = 'new_report_pdf' 
    end 

    Cucumber::Rake::Task.new({:rerun => 'db:test:prepare'}, 'Record failing features and run only them if any exist') do |t| 
     t.binary = vendored_cucumber_bin 
     t.fork = true # You may get faster startup if you set this to false 
     t.profile = 'rerun' 
    end 
... 

回答

0

这应该工作

namespace :cucumber do 
    [[:ok, 'default'], :report, :report_pdf, :wip, :new, :new_report, :new_report_pdf, :rerun].each do |key| 
    if key.is_a?(Array) 
     profile = key[1] 
     key = key[0] 
    else 
     profile = key.to_s 
    end 

    Cucumber::Rake::Task.new({key => 'db:test:prepare'}, 'Run features that should pass') do |t| 
     t.binary = vendored_cucumber_bin # If nil, the gem's binary is used. 
     t.fork = true # You may get faster startup if you set this to false 
     t.profile = profile 
    end 
    end 
end