This SCGI::Processor subclass hooks the SCGI request into Ruby on Rails.
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