Files | Admin

Notes:

Release Name: 0.991.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:

The "working_directory" configuration parameter is now handled
before config.ru.  That means "unicorn" and "unicorn_rails" no
longer barfs when initially started outside of the configured
"working_directory" where a config.ru is required.  A huge
thanks to Pierre Baillet for catching this ugly UI inconsistency
before the big 1.0 release

Thanks to Hongli Lai, out-of-the-box Rails 3 (beta) support
should be improved for deployments lacking a config.ru

There are more new integration tests, cleanups and some
documentation improvements.



Changes: GIT-VERSION-GEN | 2 +- GNUmakefile | 2 +- README | 4 +- Rakefile | 21 ++++-- SIGNALS | 7 ++- bin/unicorn | 5 +- bin/unicorn_rails | 49 ++++++++++--- examples/init.sh | 18 +++++- ext/unicorn_http/ext_help.h | 8 +-- ext/unicorn_http/extconf.rb | 6 +-- lib/unicorn.rb | 7 +- lib/unicorn/configurator.rb | 80 +++++++++++++++++++-- lib/unicorn/const.rb | 4 +- lib/unicorn/launcher.rb | 63 ++++++++-------- t/my-tap-lib.sh | 5 +- t/t0003-working_directory.sh | 56 ++++++++++++++ t/t0004-working_directory_broken.sh | 24 ++++++ t/t0005-working_directory_app.rb.sh | 37 ++++++++++ t/t0300-rails3-basic.sh | 34 +-------- t/t0301-rails3-missing-config-ru.sh | 33 +++++++++ t/t0302-rails3-alt-working_directory.sh | 32 ++++++++ t/t0303-rails3-alt-working_directory_config.ru.sh | 58 +++++++++++++++ t/test-lib.sh | 11 +++- t/test-rails3.sh | 27 +++++++ test/test_helper.rb | 3 + unicorn.gemspec | 2 +- 26 files changed, 480 insertions(+), 118 deletions(-) commit 5d53342d6cb7724a3e357551aae358b63b45342c Author: Eric Wong Date: Thu Jun 10 19:13:49 2010 -0700 unicorn 0.991.0 - startup improvements The "working_directory" configuration parameter is now handled before config.ru. That means "unicorn" and "unicorn_rails" no longer barfs when initially started outside of the configured "working_directory" where a config.ru is required. A huge thanks to Pierre Baillet for catching this ugly UI inconsistency before the big 1.0 release Thanks to Hongli Lai, out-of-the-box Rails 3 (beta) support should be improved for deployments lacking a config.ru There are more new integration tests, cleanups and some documentation improvements. commit eb57310d6130e5d2ce146126a17346f9cba6c49e Author: Eric Wong Date: Thu Jun 10 19:11:01 2010 -0700 test to ensure "unicorn fooapp.rb" respects working_directory commit 454293f71376a3601e5e087d20a7d8420fdb3260 Author: Eric Wong Date: Thu Jun 10 19:03:12 2010 -0700 add test for erroring out when config.ru is bad commit 20e84b261be1b7452d0e91b3c7d072413c8e5aea Author: Eric Wong Date: Thu Jun 10 18:39:31 2010 -0700 t0303: extra test for multiple listeners We share the same array from the original bin/* down into the Configurator. commit f9baab18705218dae4c37c2c92d1ceea151bba8e Author: Eric Wong Date: Thu Jun 10 17:57:08 2010 -0700 docs: hopefully clarify preload_app=false behavior While we're at it, inform people of why they might use a symlink commit 14da5bda8f4f34e84670fd7ce411dc92c22ec469 Author: Eric Wong Date: Thu Jun 10 17:31:33 2010 -0700 README: more aggressively kill unnecessary links ... And make the gemspec do minor un-RDoc-ing commit 264337bcdb77252404fcef62be1efc5a125d781f Author: Eric Wong Date: Thu Jun 10 17:12:37 2010 -0700 examples/init: "upgrade" task waits for completion This makes the user (sysadmin in this case) more aware if the upgrade fails or doesn't work as intended. This change could be more useful for Rainbows! with its long-running responses. commit e8a3abc038c6a282a1e9943039c9e46c27720928 Author: Eric Wong Date: Thu Jun 10 16:43:06 2010 -0700 tests: fix sha1 calculation for non-random_blob This was commit abc207b2918606867094f2820bab58223e99aac4 from rainbows.git commit 0f2b2d484e978face3aa1495526f4b4b6a6e474f Author: Eric Wong Date: Thu Jun 10 23:04:21 2010 +0000 t0303: set executable bit commit d0a0883eaaeec37800ca5cd07647b7b66a00c453 Author: Eric Wong Date: Thu Jun 10 16:28:51 2010 -0700 my-tap-lib: fix race condition in verbose mode Don't try to redirect until we know our FIFO consumers are ready for us. This only seems to happen with bash and not ksh... commit 18e6540cb0fd824989dacecc84039d91b539a101 Author: Eric Wong Date: Thu Jun 10 22:15:44 2010 +0000 tests: skip config.ru parsing tests under rbx eval("...", TOPLEVEL_BINDING) is broken for us in Rubinius (And our code is extremely nasty as well :x) ref: http://github.com/evanphx/rubinius/issues/357 commit 89707c2c8dd7068d6fe9bd7f12b389e937fe1fed Author: Eric Wong Date: Thu Jun 10 22:09:19 2010 +0000 configurator: remove debugging output commit ee0088ea9906701f0c89e89ce78acd9d4820ee65 Author: Eric Wong Date: Thu Jun 10 21:45:54 2010 +0000 fix alt-working_directory behavior for Rails 3 commit 5e8979ad38efdc4de3a69cc53aea33710d478406 Author: Eric Wong Date: Thu Jun 10 21:43:14 2010 +0000 http: cleanups for latest Rubinius Rubinius now supports rb_str_set_len() and sets -fPIC. We shouldn't check for rb_str_modify() since link-time detection is broken under Rubinius and even 1.8.6 has rb_str_modify(). commit 25bfeb87bbc6266e7e20a2b7fec21b84c8ca0e2c Author: Eric Wong Date: Thu Jun 10 21:15:21 2010 +0000 unicorn_rails: no need to load ActionDispatch::Static Rails 3 will automatically load it for us. commit c5357d45d506caafee2a90ac550c4c00b4b15ed1 Author: Eric Wong Date: Thu Jun 10 20:55:50 2010 +0000 tests: split out host/port extraction from listen more tests may use it commit 30996361d8134fee92f0198f83d71bc32f338de7 Author: Eric Wong Date: Thu Jun 10 20:49:52 2010 +0000 tests: update Rails 3 tests to Rails 3 beta4 commit 4accf4449390c649bce0b1c9d84314d65fd41f8e Author: Eric Wong Date: Thu Jun 10 08:47:10 2010 +0000 respect "working_directory" wrt config.ru Since we added support for the "working_directory" parameter, it often became unclear where/when certain paths would be bound. There are some extremely nasty dependencies and ordering issues when doing this. It's all pretty fragile, but works for now and we even have a full integration test to keep it working. I plan on cleaning this up 2.x.x to be less offensive to look at (Rainbows! and Zbatery are a bit tied to this at the moment). Thanks to Pierre Baillet for reporting this. ref: http://mid.gmane.org/AANLkTimKb7JARr_69nfVrJLvMZH3Gvs1o_KwZFLKfuxy@mail.gmail.com commit bff55e030fa3dcd4ac24ec481a67d6f327d67797 Author: Eric Wong Date: Thu Jun 10 03:06:31 2010 +0000 unicorn_rails: use Kernel#warn instead of $stderr.puts shorter is better commit 107f33b2205829c0ef07216255b4ec0e9b8f6730 Author: Eric Wong Date: Wed Jun 9 23:50:00 2010 +0000 tests: set NO_PROXY when running tests It's a good idea to use a caching http_proxy to save bandwidth when isolating gems for different Ruby versions. commit 56519d744eea72ace7c325d37b493ab9217ef44f Author: Eric Wong Date: Wed Jun 9 23:48:58 2010 +0000 Rakefile: isolate to rbx directory We haven't started using isolate with Rubinius, yet, but we may soon. commit 2224b68cfbd77bc117c79d3db6e3c320bb8aafc6 Author: Eric Wong Date: Wed Jun 9 23:48:28 2010 +0000 Rakefile: only try rake-compiler if VERSION is defined Our gemspec won't work without it commit ddb56ce824ea3686fb9a43685ddae6473e5c91c2 Author: Eric Wong Date: Wed Jun 9 16:32:34 2010 -0700 isolate: don't run isolate in parallel ~/.gems is still shared, and we don't isolate *that* often enough to matter commit 4c5faa3c001d695330f49fbed162d97e31f60357 Author: Eric Wong Date: Wed Jun 9 16:14:34 2010 -0700 launcher: get rid of backwards compatibility code Rainbows! and Zbatery have long been upgraded to pass options to us. commit bfb10e16337c99fccfc86b37cff9b78857b0fa1c Author: Eric Wong Date: Tue Jun 8 19:39:09 2010 +0000 tests: add Rails 3 test for the missing config.ru case In case we have weird Rails 3 users who choose to ignore config.ru, we'll be ready. commit 2c6141c8ae54f17cfb3091231dce0dde7212736b Author: Eric Wong Date: Tue Jun 8 19:35:42 2010 +0000 unicorn_rails: fix requires for Ruby 1.9.2 Ruby 1.9.2 no longer includes "." in $LOAD_PATH, so we need to require using an explicit path. This issue only affected Rails 3 users who chose to run without the default config.ru, as the config.ru generated by Rails 3 will call File.expand_path in the same way. commit 181ee8ca0855ca8f3af7317f2dc54c7ee63524f7 Author: Eric Wong Date: Tue Jun 8 19:28:03 2010 +0000 tests: libify common rails3 setup code We'll be adding more Rails 3 tests.. commit 37e264d7e132969e1faf87247e66abf909cedf29 Author: Hongli Lai (Phusion) Date: Tue Jun 8 13:22:25 2010 +0200 Fix unicorn_rails compatibility with the latest Rails 3 code This allows us to properly detect Rails 3 installations in cases where config.ru is not present. [ew: expanded commit message fixed static file serving, more flexible regexp for matching module ] ref: mid.gmane.org/AANLkTiksBxIo_PFWoiPTWi1entXZRb7D2uE-Rl7H3lbw@mail.gmail.com Acked-by: Eric Wong commit ac0033c74c7477d5fe13bd95df4e704b9544a9ae Author: Eric Wong Date: Tue Jun 8 18:41:57 2010 +0000 t0300: Rails 3 test actually uses unicorn_rails Oops, but unicorn_rails appears to work well here