# File lib/action_dispatch/routing/redirection.rb, line 39
      def redirect(*args, &block)
        options = args.last.is_a?(Hash) ? args.pop : {}
        status  = options.delete(:status) || 301

        path = args.shift

        path_proc = if path.is_a?(String)
          proc { |params| (params.empty? || !path.match(/%\{\w*\}/)) ? path : (path % params) }
        elsif options.any?
          options_proc(options)
        elsif path.respond_to?(:call)
          proc { |params, request| path.call(params, request) }
        elsif block
          block
        else
          raise ArgumentError, "redirection argument not supported"
        end

        redirection_proc(status, path_proc)
      end