class Object
Public Instance Methods
around_chatwork(task_name)
click to toggle source
# File lib/capistrano/around_chatwork.rb, line 32 def around_chatwork(task_name) start_time = nil before_task = Rake::Task.define_task("#{task_name}:__before__") do message = Capistrano::AroundChatwork.format_message( message: fetch(:starting_message), task_name: task_name, ) Capistrano::AroundChatwork.post_chatwork(message) start_time = Time.now end after_task = Rake::Task.define_task("#{task_name}:__after__") do elapsed_time = Time.now - start_time message = Capistrano::AroundChatwork.format_message( message: fetch(:ending_message), task_name: task_name, elapsed_time: elapsed_time, ) Capistrano::AroundChatwork.post_chatwork(message) end target_task = Rake::Task[task_name] target_task.instance_eval do define_singleton_method :invoke_with_failure_message do |*args| begin invoke_without_failure_message(*args) rescue Exception => error elapsed_time = Time.now - start_time message = Capistrano::AroundChatwork.format_message( message: fetch(:failure_message), task_name: task_name, elapsed_time: elapsed_time, error: error, ) Capistrano::AroundChatwork.post_chatwork(message) raise end end alias :invoke_without_failure_message :invoke alias :invoke :invoke_with_failure_message end target_task.enhance([before_task]) do Rake::Task[after_task].invoke end end