28 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
# 执行示例  bundle exec rake sync_version_issues:update_issues
 | 
						|
# 线上环境执行示例  RAILS_ENV=production bundle exec rake sync_version_issues:update_issues
 | 
						|
 | 
						|
namespace :sync_version_issues do
 | 
						|
  desc "update version issues_count"
 | 
						|
 | 
						|
  task update_issues: :environment do
 | 
						|
    puts "____________sync start________________"
 | 
						|
 | 
						|
    Version.all.each do |q|
 | 
						|
      puts "______########{q.id}"
 | 
						|
      issues = Issue.select(:id, :fixed_version_id,:status_id).where(fixed_version_id: q.id)
 | 
						|
      issues_count = issues.size
 | 
						|
      closed_issues_count = issues.where(status_id: 5).size
 | 
						|
      percent = issues_count == 0 ? 0.0 : (closed_issues_count.to_f / issues_count)
 | 
						|
 | 
						|
      begin
 | 
						|
        q.update!(closed_issues_count: closed_issues_count, percent: percent)
 | 
						|
        Version.update_counters q.id,issues_count: issues_count
 | 
						|
        puts "____issues_count__########{q.issues_count}"
 | 
						|
      rescue Exception => e
 | 
						|
        puts "#####_______save_error______######{e}"
 | 
						|
      end
 | 
						|
    end
 | 
						|
    puts "____________sync end________________"
 | 
						|
  end
 | 
						|
 | 
						|
end |