Adoptable Cookbooks List

Looking for a cookbook to adopt? You can now see a list of cookbooks available for adoption!
List of Adoptable Cookbooks

Supermarket Belongs to the Community

Supermarket belongs to the community. While Chef has the responsibility to keep it running and be stewards of its functionality, what it does and how it works is driven by the community. The chef/supermarket repository will continue to be where development of the Supermarket application takes place. Come be part of shaping the direction of Supermarket by opening issues and pull requests or by joining us on the Chef Mailing List.

Select Badges

Select Supported Platforms

Select Status

The unicorn cookbook has been deprecated

Author provided reason for deprecation:

The unicorn cookbook has been deprecated and is no longer being maintained by its authors. Use of the unicorn cookbook is no longer recommended.


unicorn (12) Versions 2.1.0

Installs and configures unicorn

cookbook 'unicorn', '= 2.1.0', :supermarket
cookbook 'unicorn', '= 2.1.0'
knife supermarket install unicorn
knife supermarket download unicorn
Quality 0%

unicorn Cookbook

Build Status
Cookbook Version

Installs and configures unicorn, and provides a definition to manage
configuration file for Rack apps running under unicorn.



  • Any platform the supports the unicorn gem


  • Chef 11+


  • none



The unicorn_config definition manages the configuration template for
an application running under unicorn.


  • listen - Default is nil.
  • working_directory - Default is nil.
  • worker_timeout - Default is 60.
  • preload_app - Default is false.
  • worker_processes - Number of worker processes to spawn. Default is 4.
  • unicorn_command_line - If set, specifies the unicorn commandline to set in the config file. Usefull when sandboxing your unicorn installation.
  • forked_user - User to run children as. Default is nil.
  • forked_group - Group to run children as. You must specify a forked_user as well to use this attribute. Default is nil.
  • before_exec - Default is nil.
  • before_fork - Default is nil.
  • after_fork - Default is nil.
  • pid - Pidfile location. Default is nil.
  • stderr_path - Where stderr gets logged. Default is nil.
  • stdout_path - Where stdout gets logged. Default is nil.
  • notifies - How to notify another service if specified. Default is nil.
  • owner - Owner of the template. Default is nil.
  • group - group of the template. Default is nil.
  • mode - mode of the template. Default is nil.
  • unicorn_command_line - Specify the command-line for the unicorn binary as a string. Populates Unicorn::HttpServer::START_CTX[0]. Default is nil.
  • copy_on_write - Whether the app should take advantage of REE Copy On Write feature. Default is false.
  • enable_stats - Whether the app should have GC profiling enabled for instrumentation. Default is false.

For more information on copy_on_write and enable_stats, see:



Setting some custom attributes in a recipe (this is from Chef's

node.default[:unicorn][:worker_timeout] = 60
node.default[:unicorn][:preload_app] = false
node.default[:unicorn][:worker_processes] = [node[:cpu][:total].to_i * 4, 8].min
node.default[:unicorn][:preload_app] = false
node.default[:unicorn][:before_fork] = 'sleep 1'
node.default[:unicorn][:port] = '8080'
node.set[:unicorn][:options] = { :tcp_nodelay => true, :backlog => 100 }

unicorn_config "/etc/unicorn/#{app['id']}.rb" do
  listen({ node[:unicorn][:port] => node[:unicorn][:options] })
  working_directory ::File.join(app['deploy_to'], 'current')
  worker_timeout node[:unicorn][:worker_timeout]
  preload_app node[:unicorn][:preload_app]
  worker_processes node[:unicorn][:worker_processes]
  before_fork node[:unicorn][:before_fork]

License and Author

Copyright 2009-2015, Chef Software, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.

Dependent cookbooks

build-essential >= 0.0.0

Contingent cookbooks

application Applicable Versions
application_ruby Applicable Versions
errbit Applicable Versions
errbit-server Applicable Versions
gdash Applicable Versions
geminabox Applicable Versions
iptables_web Applicable Versions
mater Applicable Versions
myusa Applicable Versions
pita Applicable Versions
rackbox Applicable Versions
rails_application Applicable Versions
railsbox Applicable Versions
sinatra Applicable Versions
spree Applicable Versions

unicorn Cookbook CHANGELOG

This file is used to list changes made in each version of the unicorn cookbook.


  • Include build-essential in the default recipe to that the necessary build tools will be in place to compile native gem deps for the unicorn gem
  • Add testing with Kitchen CI config, basic convergence Chefspec, Travis CI config
  • Add rubocop config and resolve warnings
  • Add a gitignore, chefignore, Berksfile, and Gemfile to the repo
  • Add source_url and issues_url to the metadata
  • Better define chef / platform requirements in the readme and add common platforms to the metadata file
  • Add testing and cookbook version badges to the readme
  • Update all Opscode references to Chef Software


  • #9 Removes transform to allow for using node attributes for params.



  • [COOK-2470]: Add "user" directive support to Unicorn cookbook


  • [COOK-2442] - Template uses an ActiveSupport method


  • [COOK-2229] - Allow specification of unicorn command line in config file
  • [COOK-2349] - Add option to include cow and GC stats
  • [COOK-2354] - if no listen options are provided for a port, a trailing comma is left which causes unicorn to crash


  • [COOK-857] - Unicorn not quoting listener ports/sockets
  • [COOK-1273] - add ability to specify before_exec block


  • Current public release.

Foodcritic Metric

2.1.0 failed this metric

FC015: Consider converting definition to a LWRP: /tmp/cook/119ada69f504c7c505df49e9/unicorn/definitions/unicorn_config.rb:1