Sha256: e45d02edeeb907e0aeada1f47678b6f11be5a0e5c95c649d748db2c76cbe5798
Contents?: true
Size: 1.38 KB
Versions: 22
Compression:
Stored size: 1.38 KB
Contents
module Picky module Rack # :nodoc: # Simple Rack Middleware to kill Unicorns after X requests. # # Use as follows in e.g. your rackup File: # # Rack::Harakiri.after = 100 # use Rack::Harakiri # # Then the Unicorn will commit suicide after 100 requests (50 is the default). # # The Master Unicorn process forks a new child Unicorn to replace the old one. # class Harakiri # Set the amount of requests before the Unicorn commits Harakiri. # cattr_accessor :after def initialize app @app = app @requests = 0 @quit_after_requests = self.class.after || 50 end # #call interface method. # # Harakiri is a middleware, so it delegates the the app or # the next middleware after checking if it is time to honorably retire. # def call env harakiri @app.call env end # Checks to see if it is time to honorably retire. # # If yes, kills itself (Unicorn will answer the request, honorably). # # Note: Sends its process a QUIT signal if it is time. # def harakiri @requests = @requests + 1 Process.kill(:QUIT, Process.pid) if harakiri? end # Is it time to honorably retire? # def harakiri? @requests >= @quit_after_requests end end end end
Version data entries
22 entries across 22 versions & 1 rubygems