class Rack::Adapter::Rails::CGIWrapper

Public Class Methods

new(request, response, *args) click to toggle source
# File lib/rack/adapter/rails.rb, line 96
def initialize(request, response, *args)
  @request  = request
  @response = response
  @args     = *args
  @input    = request.body

  super *args
end

Public Instance Methods

args() click to toggle source

Used to wrap the normal args variable used inside CGI.

# File lib/rack/adapter/rails.rb, line 162
def args
  @args
end
cookies() click to toggle source
# File lib/rack/adapter/rails.rb, line 153
def cookies
  @request.cookies
end
env_table() click to toggle source

Used to wrap the normal #env_table variable used inside CGI.

# File lib/rack/adapter/rails.rb, line 167
def env_table
  @request.env
end
header(options = "text/html") click to toggle source
# File lib/rack/adapter/rails.rb, line 105
def header(options = "text/html")
  if options.is_a?(String)
    @response['Content-Type']     = options unless @response['Content-Type']
  else
    @response['Content-Length']   = options.delete('Content-Length').to_s if options['Content-Length']
  
    @response['Content-Type']     = options.delete('type') || "text/html"
    @response['Content-Type']    += "; charset=" + options.delete('charset') if options['charset']
              
    @response['Content-Language'] = options.delete('language') if options['language']
    @response['Expires']          = options.delete('expires') if options['expires']

    @response.status              = options.delete('Status') if options['Status']
    
    # Convert 'cookie' header to 'Set-Cookie' headers.
    # Because Set-Cookie header can appear more the once in the response body, 
    # we store it in a line break seperated string that will be translated to
    # multiple Set-Cookie header by the handler.
    if cookie = options.delete('cookie')
      cookies = []
      
      case cookie
        when Array then cookie.each { |c| cookies << c.to_s }
        when Hash  then cookie.each { |_, c| cookies << c.to_s }
        else            cookies << cookie.to_s
      end
      
      @output_cookies.each { |c| cookies << c.to_s } if @output_cookies
      
      @response['Set-Cookie'] = [@response['Set-Cookie'], cookies].compact
      # See http://groups.google.com/group/rack-devel/browse_thread/thread/e8759b91a82c5a10/a8dbd4574fe97d69?#a8dbd4574fe97d69
      if Thin.ruby_18?
        @response['Set-Cookie'].flatten!
      else
        @response['Set-Cookie'] = @response['Set-Cookie'].join("\n")
      end
    end
    
    options.each { |k,v| @response[k] = v }
  end
  
  ""
end
params() click to toggle source
# File lib/rack/adapter/rails.rb, line 149
def params
  @params ||= @request.params
end
query_string() click to toggle source
# File lib/rack/adapter/rails.rb, line 157
def query_string
  @request.query_string
end
stdinput() click to toggle source

Used to wrap the normal stdinput variable used inside CGI.

# File lib/rack/adapter/rails.rb, line 172
def stdinput
  @input
end
stdoutput() click to toggle source
# File lib/rack/adapter/rails.rb, line 176
def stdoutput
  STDERR.puts "stdoutput should not be used."
  @response.body
end