# # Cookbook Name:: application # Recipe:: unicorn # # Copyright 2009, Opscode, 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 # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # app = node.run_state['current_app'] include_recipe "unicorn" 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'] end runit_service app['id'] do template_name 'unicorn' cookbook 'application' options( :app => app, :rails_env => node.run_state['rails_env'] || node.chef_environment, :smells_like_rack => ::File.exists?(::File.join(app['deploy_to'], "current", "config.ru")) ) run_restart false end if ::File.exists?(::File.join(app['deploy_to'], "current")) d = resources(:deploy_revision => app['id']) d.restart_command do execute "/etc/init.d/#{app['id']} hup" end end