Unicorn 0.93.0 - Rack HTTP server

Unicorn is a HTTP server for Rack applications designed to take
advantage of features in Unix/Unix-like kernels and only serve fast
clients on low-latency, high-bandwidth connections.

More small fixes and documentation improvements in this release, things
have settled down a lot since 0.90.0 in August and we’ve mainly been
focusing on documentation, minor UI improvements and the occasional
minor bugfix as they get reported.

Changes:

The one minor bugfix is only for Rails 2.3.x+ users who set the
RAILS_RELATIVE_URL_ROOT environment variable in a config file.
Users of the “–path” switch or those who set the environment
variable in the shell were unaffected by this bug. Note that we
still don’t have relative URL root support for Rails < 2.3, and
are unlikely to bother with it unless there is visible demand
for it.

New features includes support for :tries and :delay when
specifying a “listen” in an after_fork hook. This was inspired
by Chris W.'s example of binding per-worker listen
sockets in a loop while migrating (or upgrading) Unicorn.
Setting a negative value for :tries means we’ll retry the listen
indefinitely until the socket becomes available.

So you can do something like this in an after_fork hook:

  after_fork do |server, worker|
    addr = "127.0.0.1:#{9293 + worker.nr}"
    server.listen(addr, :tries => -1, :delay => 5)
  end

There’s also the usual round of added documentation, packaging
fixes, code cleanups, small fixes and minor performance
improvements that are viewable in the “git log” output.

Unicorn is a HTTP server for Rack applications designed to take
advantage of features in Unix/Unix-like kernels and only serve fast
clients on low-latency, high-bandwidth connections.

Changes:

Fix permissions for release tarballs/gems, no other changes.
Thanks to Jay Reitz for reporting this.