module QuiversTaskrunner::RakeHelper
Public Class Methods
safe_invoke(tasks, ensure_tasks={}, options={})
click to toggle source
# File lib/quiverstaskrunner/helpers/rakehelper.rb, line 7 def self.safe_invoke(tasks, ensure_tasks={}, options={}) start_time = Time.now task_group_name = options[:task_group_name] || "safe task invoke" if options[:display_message] && !options[:global].nil? && options[:global].respond_to?("no_error") puts "Start #{task_group_name}...".colorize(:cyan) end begin if tasks.is_a?(Array) tasks.each { |t| Rake::Task[t].invoke } else Rake::Task[tasks].invoke end rescue Exception => ex raise ex ensure if ensure_tasks.is_a?(Array) && ensure_tasks.any? RakeHelper.safe_invoke(ensure_tasks[0], ensure_tasks.shift) else Rake::Task[ensure_tasks].invoke unless ensure_tasks.empty? end end if options[:display_message] && !options[:global].nil? && options[:global].respond_to?("no_error") ellapsed_time_min = (Time.now - start_time)/60.to_f build_status = "successfully completed in" color_theme = :green unless options[:global].no_error build_status = "failed after" color_theme = :red end puts "#{task_group_name.capitalize} #{build_status} #{ellapsed_time_min} minutes".colorize(color_theme) end end