require 'hpricot' desc "CruiseControl tasks" task :cruise => :environment do app_name = RAILS_ROOT.split('/').reverse[1] report_url = "/app/cruise_control/public/reports/#{app_name}.html" begin File.open("#{RAILS_ROOT}/config/database.yml",'w'){|f| f.write( %Q{development: adapter: sqlite3 database: db/development.sqlite3 test: adapter: sqlite3 database: db/test.sqlite3 production: adapter: sqlite3 database: db/production.sqlite3})} Rake::Task['db:migrate'].invoke report = Rake::Task.task_defined?('report') if report Rake::Task['report'].invoke system("cp #{RAILS_ROOT}/report.html #{report_url}") else rcov = Rake::Task.task_defined?('test:units:rcov') ENV["SHOW_ONLY"] = "m" if rcov Rake::Task[rcov ? 'test:units:rcov' : 'test:units'].invoke ENV["SHOW_ONLY"] = "c" if rcov Rake::Task[rcov ? 'test:functionals:rcov' : 'test:functionals'].invoke if rcov unit_coverage = open("#{RAILS_ROOT}/coverage/units/index.html"){|f| Hpricot(f)}.at("tt[@class='coverage_code']").inner_html functional_coverage = open("#{RAILS_ROOT}/coverage/functionals/index.html"){|f| Hpricot(f)}.at("tt[@class='coverage_code']").inner_html end File.open(report_url,'w'){|f| f.write(%Q{

#{app_name.capitalize}

For a better report, please add the report.rake file to your application.

})} end rescue File.open(report_url,'w'){|f| f.write(%Q{

#{app_name.capitalize}

Your build did not succeed, so no report was generated.

})} raise "Build failed" end end