public
Description: New and ultra-turbo-crazy-fast backend for Thin
Homepage: http://code.macournoyer.com/thin/
Clone URL: git://github.com/macournoyer/thin-turbo.git
macournoyer (author)
Wed Apr 30 19:57:31 -0700 2008
commit  0f7afa9c06008d9467a62977661efe8ceea74c1b
tree    33f5e9b175d0900701eb4840bd63b6dad6d3e355
parent  9df329be7c5ba0f634f063086f12f4b7859454a6
thin-turbo / lib / rack / adapter / threaded_rails.rb
100644 31 lines (25 sloc) 0.824 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
require 'rack/adapter/rails'
 
# Monkey patch Thin Rails adapter to add a mutex
module Rack
  module Adapter
    class Rails
      def initialize_with_mutex(*args)
        @mutex = Mutex.new
        initialize_without_mutex(*args)
        
        puts "using threaded rails"
      end
      alias_method :initialize_without_mutex, :initialize
      alias_method :initialize, :initialize_with_mutex
      
      def serve_rails(env)
        request = Request.new(env)
        response = Response.new
        
        session_options = ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS
        cgi = CGIWrapper.new(request, response)
    
        @mutex.synchronize do
          Dispatcher.dispatch(cgi, session_options, response)
        end
 
        response.finish
      end
    end
  end
end