Release Name: 0.96.0
Notes:
Unicorn is an HTTP server for Rack applications designed to only serve
fast clients on low-latency, high-bandwidth connections and take
advantage of features in Unix/Unix-like kernels. Slow clients should
only be served by placing a reverse proxy capable of fully buffering
both the the request and response in between Unicorn and slow clients.
* http://unicorn.bogomips.org/
* mongrel-unicorn@rubyforge.org
* git://git.bogomips.org/unicorn.git
Changes:
This release includes small changes for things allowed by Rack
1.1. It is also now easier to detect if daemonized process
fails to start. Manpages received some minor updates as well.
Rack 1.1 allowed us to make the following environment changes:
* "rack.logger" is now set to the "logger" specified in
the Unicorn config file. This defaults to a Logger
instance pointing to $stderr.
* "rack.version" is now at [1,1]. Unicorn remains
compatible with previous Rack versions if your app
depends on it.
While only specified since Rack 1.1, Unicorn has always exposed
"rack.input" in binary mode (and has ridiculous integration
tests that go outside of Ruby to prove it!).
Changes:
Documentation/unicorn.1.txt | 11 +++---
Documentation/unicorn_rails.1.txt | 10 ++---
GIT-VERSION-GEN | 2 +-
GNUmakefile | 4 +-
bin/unicorn | 4 +-
bin/unicorn_rails | 4 +-
lib/unicorn.rb | 21 ++++++++++-
lib/unicorn/const.rb | 2 +-
lib/unicorn/http_request.rb | 2 +-
lib/unicorn/http_response.rb | 3 +-
lib/unicorn/launcher.rb | 38 ++++++++++++++++---
local.mk.sample | 2 +-
test/exec/test_exec.rb | 2 +-
test/rails/{app-2.3.3.1 => app-2.3.5}/.gitignore | 0
test/rails/{app-2.3.3.1 => app-2.3.5}/Rakefile | 0
.../app/controllers/application_controller.rb | 0
.../app/controllers/foo_controller.rb | 0
.../app/helpers/application_helper.rb | 0
.../{app-2.3.3.1 => app-2.3.5}/config/boot.rb | 0
.../{app-2.3.3.1 => app-2.3.5}/config/database.yml | 0
.../config/environment.rb | 0
.../config/environments/development.rb | 0
.../config/environments/production.rb | 0
.../{app-2.3.3.1 => app-2.3.5}/config/routes.rb | 0
.../rails/{app-2.3.3.1 => app-2.3.5}/db/.gitignore | 0
.../{app-2.3.3.1 => app-2.3.5}/log/.gitignore | 0
.../{app-2.3.3.1 => app-2.3.5}/public/404.html | 0
.../{app-2.3.3.1 => app-2.3.5}/public/500.html | 0
test/rails/{app-2.3.3.1 => app-2.3.5}/public/x.txt | 0
test/unit/test_server.rb | 10 +++++
30 files changed, 83 insertions(+), 32 deletions(-)
commit 30e8ae1d0d2eed17eade14978ba52cb2959b9e91
Author: Eric Wong
Date: Thu Jan 7 20:53:45 2010 -0800
unicorn 0.96.0 - Rack 1.1 bump
This release includes small changes for things allowed by Rack
1.1. It is also now easier to detect if daemonized process
fails to start. Manpages received some minor updates as well.
Rack 1.1 allowed us to make the following environment changes:
* "rack.logger" is now set to the "logger" specified in
the Unicorn config file. This defaults to a Logger
instance pointing to $stderr.
* "rack.version" is now at [1,1]. Unicorn remains
compatible with previous Rack versions if your app
depends on it.
While only specified since Rack 1.1, Unicorn has always exposed
"rack.input" in binary mode (and has ridiculous integration
tests that go outside of Ruby to prove it!).
commit 3eb8dd9bd48ae031a90747210c28ece491d1017e
Merge: 19dac8e 52400de
Author: Eric Wong
Date: Thu Jan 7 20:49:59 2010 -0800
Merge branch 'rack-1.1'
* rack-1.1:
http_response: disallow blank, multi-value headers
local.mk.sample: use rack-1.1.0
bump "rack.version" env to [1,1]
set env["rack.logger"] for applications
commit 52400de1c9e9437b5c9df899f273485f663bb5b5
Author: Eric Wong
Date: Tue Jan 5 17:36:17 2010 -0800
http_response: disallow blank, multi-value headers
The HeaderHash optimizations in Rack 1.1 interact badly with
Rails 2.3.5 (and possibly other frameworks/apps) which set
multi-value "Set-Cookie" headers without relying on the proper
methods provided by Rack::Utils.
While this is an issue with Rails not using properly, there
may be similar apps that make this mistake and Rack::Lint
does not guard against it.
Rack-ML-Ref: <20100105235845.GB3377@dcvr.yhbt.net>
commit 8da4448c7117759b0fb8ea8e4243e81ea8b26e7c
Author: Eric Wong
Date: Tue Jan 5 17:17:00 2010 -0800
local.mk.sample: use rack-1.1.0
commit 19dac8e60e12036b2717cb4933e79ac9efb04d40
Author: Eric Wong
Date: Tue Jan 5 16:13:53 2010 -0800
bump Rails test to 2.3.5
Rails 2.3.3.1 is ancient
commit 841f967666292f634c6af485f7ac452f36cc2028
Merge: 40924ca fe005f5
Author: Eric Wong
Date: Tue Jan 5 16:10:17 2010 -0800
Merge branch 'ready_pipe'
* ready_pipe:
launcher: no point in sync-ing $stdin
launcher: fix compatibility with other servers
clarify errors when listeners fail to bind
launcher: descriptive error message on startup failure
Avoid leaking ready pipe file descriptor to workers
exit with failure if master dies when daemonized
commit 40924ca5f42a5708159ac27b992805f24ecbae9b
Author: Eric Wong
Date: Tue Jan 5 12:10:25 2010 -0800
NEWS: generation depends on .manifest
commit fe005f50efc8db5b9f4b2387b3b2c42f12d7c2c0
Author: Eric Wong
Date: Tue Dec 29 21:21:47 2009 -0800
launcher: no point in sync-ing $stdin
Inspection of the MRI source reveals that IO#sync=true only
appears to only apply for writes. Though it could eventually
make sense to disable read buffering by setting IO#sync=true,
it does not appear to happen.
Of course we never read from $stdin anyways....
commit 8268fea415a8c76da810f0a43e0bf63ac6c77238
Author: Eric Wong
Date: Tue Dec 29 12:44:20 2009 -0800
launcher: fix compatibility with other servers
Rainbows! does not yet know about ready_pipe, and will probably
not know about it until Unicorn 0.97.0
commit 1a0f0688bb2257c6db8e8a3f41b9a41641c2db3f
Author: Iñaki Baz Castillo
Date: Mon Dec 28 15:46:26 2009 -0800
clarify errors when listeners fail to bind
When using multiple listeners, the log messages can be
potentially misleading as to which listener fails to bind:
Before:
INFO -- : unlinking existing socket=/tmp/unicorn.sock
INFO -- : listening on addr=/tmp/unicorn.sock fd=3
unicorn/socket_helper.rb:110:in `initialize': Permission denied - bind(2) (Errno::EACCES)
After:
INFO -- : unlinking existing socket=/tmp/openxdms.sock
INFO -- : listening on addr=/tmp/openxdms.sock fd=3
FATAL -- : error adding listener addr=0.0.0.0:84
unicorn/socket_helper.rb:110:in `initialize': Permission denied - bind(2) (Errno::EACCES)
commit 4239f0618c8107545fd5babd256c89ffd82553bd
Author: Iñaki Baz Castillo
Date: Mon Dec 28 15:46:26 2009 -0800
clarify errors when listeners fail to bind
When using multiple listeners, the log messages can be
potentially misleading as to which listener fails to bind:
Before:
INFO -- : unlinking existing socket=/tmp/unicorn.sock
INFO -- : listening on addr=/tmp/unicorn.sock fd=3
unicorn/socket_helper.rb:110:in `initialize': Permission denied - bind(2) (Errno::EACCES)
After:
INFO -- : unlinking existing socket=/tmp/openxdms.sock
INFO -- : listening on addr=/tmp/openxdms.sock fd=3
FATAL -- : error adding listener addr=0.0.0.0:84
unicorn/socket_helper.rb:110:in `initialize': Permission denied - bind(2) (Errno::EACCES)
commit 52eee4e424198a3c80793ee9c930fd3bb0285168
Author: Eric Wong
Date: Mon Dec 28 11:16:00 2009 -0800
launcher: descriptive error message on startup failure
Rather than erroring out with a non-descript EOFError,
show a warning message telling users to check the logs
instead.
Reported-by: Iñaki Baz Castillo mid=200912281350.44760.ibc@aliax.net
commit 36888441021fbb0ae0cf724dc4e700d316b4d1bd
Author: Eric Wong
Date: Sun Dec 27 19:38:39 2009 -0800
Avoid leaking ready pipe file descriptor to workers
Otherwise the original spawner process may not notice the close
as it's still being shared by workers. While we're at it, avoid
confusing the original spawner by using readpartial instead of
sysread.
commit 5eea32764571b721cd1a89cf9ebfa853c621ac9e
Author: Eric Wong
Date: Sat Dec 26 17:04:57 2009 -0800
exit with failure if master dies when daemonized
This behavior change also means our grandparent (launched
from a controlling terminal or script) will wait until
the master process is ready before returning.
Thanks to Iñaki Baz Castillo for the initial implementations
and inspiration.
commit 53b53c7d2e8c4fe6ef30184782bd7ab466becf19
Author: Eric Wong
Date: Sat Dec 26 15:39:29 2009 -0800
bump "rack.version" env to [1,1]
This will match what's in Rack the 1.1.0 release.
commit 643994afcdbd4121c0d131a87052cdd17d40e54f
Author: Eric Wong
Date: Fri Dec 25 01:49:13 2009 +0000
doc: update manpages since we got new features
working_directory and Worker#user got added over time, so
recommending Dir.chdir and Process::UID.change_privilege
is bad.
commit db9c8a22d824a3a95ddfcafb0338fcc6e5157608
Author: Eric Wong
Date: Fri Dec 25 01:39:52 2009 +0000
bin/*: shebangs should be educational
commit ef02631a26bd29f8930585f207839bf35f2bf1e8
Author: Eric Wong
Date: Mon Dec 14 00:09:40 2009 -0800
set env["rack.logger"] for applications
rack.git upstream has it, so it will likely be in Rack 1.1
|