# File lib/capistrano/configuration/callbacks.rb, line 98 def on(event, *args, &block) options = args.last.is_a?(Hash) ? args.pop : {} callbacks[event] ||= [] if args.empty? && block.nil? raise ArgumentError, "please specify either a task name or a block to invoke" elsif args.any? && block raise ArgumentError, "please specify only a task name or a block, but not both" elsif block callbacks[event] << ProcCallback.new(block, options) else args.each do |name| callbacks[event] << TaskCallback.new(self, name, options) end end end