= Unicorn: UNIX + LAN/localhost-only fork of Mongrel Only run this behind a full-HTTP-request-buffering reverse proxy if you're serving slow clients. That said, nginx is the only reverse proxy we know of that meets this requirement. == Features * process management: Unicorn will reap and restart workers that die because of broken apps and there is no need to manage multiple processes yourself. * does not care if your application is thread-safe or not, workers all run within their own isolated address space and only serve one client at a time... * able to listen on multiple interfaces, including UNIX sockets, each worker process can also bind to a private port via the after_fork hook for easy debugging. * supports all Rack applications * nginx-style binary re-execution without losing connections. You can upgrade unicorn, your entire application, libraries and even your Ruby interpreter as long as unicorn is installed in the same path. * before_fork and after_fork hooks in case your application has special needs when dealing with forked processes. * builtin log rotation via USR1 signal * Ruby 1.9-compatible (at least the test cases all pass :>) == License Unicorn is copyright 2009 Eric Wong and contributors. It is based on Mongrel: Mongrel is copyright 2007 Zed A. Shaw and contributors. It is licensed under the Ruby license and the GPL2. See the include LICENSE file for details. == Install The library consists of a C extension so you'll need a C compiler or at least a friend who can build it for you. Finally, the source includes a setup.rb for those who hate RubyGems. You can get the source via git via the following locations: git://git.bogomips.org/unicorn.git http://git.bogomips.org/unicorn.git == Usage Unicorn will look for the config.ru file used by rackup in APP_ROOT. Optionally, it can use a config file specified by the --config-file/-c command-line switch. Unicorn should be capable of running all Rack applications. Since this is a preforking webserver, you do not have to worry about thread-safety of your application or libraries. However, your Rack application may use threads internally (and should even be able to continue running threads after the request is complete). == Contact Newsgroup and mailing list coming, or it'll be a part of the Mongrel project... Email Eric Wong at normalperson@yhbt.net for now.