Class RailsSCGIProcessor

  1. lib/style/handler/scgi.rb
Parent: SCGI::Processor

This SCGI::Processor subclass hooks the SCGI request into Ruby on Rails.

Methods

public class

  1. new

public instance

  1. process_request

Public class methods

new (settings)

Initialzes Rails with the appropriate environment and settings

[show source]
    # File lib/style/handler/scgi.rb, line 29
29:   def   initializeinitializeinitialize(settings)
30:     $0 += " environment:#{ENV['RAILS_ENV'] = settings[:environment] || 'production'}"
31:     require 'config/environment'
32:     ActiveRecord::Base.allow_concurrency = false if defined?(ActiveRecord)
33:     require 'dispatcher'
34:     super(settings)
35:     @guard = Mutex.new
36:   end

Public instance methods

process_request (request, body, socket)

Submits requests to Rails in a single threaded fashion

[show source]
    # File lib/style/handler/scgi.rb, line 39
39:   def process_request(request, body, socket)
40:     return if socket.closed?
41:     cgi = SCGI::CGIFixed.new(request, body, socket)
42:     begin
43:       @guard.synchronize{Dispatcher.dispatch(cgi, ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS, cgi.stdoutput)}
44:     rescue IOError
45:       @log.error("received IOError #$! when handling client.  Your web server doesn't like me.")
46:     rescue Object => rails_error
47:       @log.error("calling Dispatcher.dispatch", rails_error)
48:     end
49:   end