I’ve been switching all my new applications to Unicorn (nginx+unicorn) from Passenger (nginx+passenger). Passenger comes with an extension to nginx and needs to be compiled with nginx as a plugin. That requires additional maintenance on server and not a good idea in general when having more that just 1 ruby runtime on the server.
I use capistrano for all my apps and find it very useful for quick and handy deployments. After switch to unicorn i’ve been copying-and-pasting the same code over and over again, so i decided to move it to a separate gem.
Check out code on github – capistrano-unicorn.
Usage
Assuming that you already have your capistrano script ready, add gem to the Gemfile:
group :development do gem 'capistrano-unicorn' end
Then, add requirement to the deploy.rb file (after all hooks):
require 'capistrano-unicorn'
Configuration
All unicorn configs should be placed under APP_ROOT/config/unicorn/ENVIRONMENT.rb
So, for each environment there should be a separate file.
Test if that worked:
cap unicorn:start cap unicorn:stop cap unicorn:reload
For more information check out github repository – capistrano-unicorn.
It is still under development, but basic functionality works fine.