on (Capistrano::Configuration::Callbacks)

    # File lib/capistrano/configuration/callbacks.rb, line 103
          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