Switched my RoR (3.1.3, 1.9.2) app from Thin to Unicorn (4.6.2). It ran
fine in development
(Mac OSX), but when deploying to production on Heroku, it fails with the
following error:
Starting process with command bundle exec unicorn start -p 6069 -c ./config/unicorn.rb
/app/vendor/bundle/ruby/1.9.1/gems/unicorn-4.6.2/lib/unicorn/configurator.rb:634:in
parse_rackup_file': rackup file (start) not readable (ArgumentError) from /app/vendor/bundle/ruby/1.9.1/gems/unicorn-4.6.2/lib/unicorn/configurator.rb:77:in
reload’
from
/app/vendor/bundle/ruby/1.9.1/gems/unicorn-4.6.2/lib/unicorn/configurator.rb:68:in
initialize' from /app/vendor/bundle/ruby/1.9.1/gems/unicorn-4.6.2/lib/unicorn/http_server.rb:108:in
new’
from
/app/vendor/bundle/ruby/1.9.1/gems/unicorn-4.6.2/lib/unicorn/http_server.rb:108:in
initialize' from /app/vendor/bundle/ruby/1.9.1/gems/unicorn-4.6.2/bin/unicorn:126:in
new’
from
/app/vendor/bundle/ruby/1.9.1/gems/unicorn-4.6.2/bin/unicorn:126:in
<top (required)>' from /app/vendor/bundle/ruby/1.9.1/bin/unicorn:19:in
load’
from /app/vendor/bundle/ruby/1.9.1/bin/unicorn:19:in `’
Process exited with status 1
State changed from starting to crashed
config.ru:
require ::File.expand_path(‘…/config/environment’, FILE)
run NoveltyStats::Application
Procfile:
web: bundle exec unicorn start -p $PORT -c ./config/unicorn.rb
sidekiq: bundle exec sidekiq -c 10
unicorn.rb:
worker_processes Integer(ENV[“WEB_CONCURRENCY”] || 3)
timeout 15
preload_app true
before_fork do |server, worker|
Signal.trap 'TERM' do
puts 'Unicorn master intercepting TERM and sending myself QUIT
instead’
Process.kill ‘QUIT’, Process.pid
end
defined?(ActiveRecord::Base) and
ActiveRecord::Base.connection.disconnect!
end
after_fork do |server, worker|
Signal.trap 'TERM' do
puts 'Unicorn worker intercepting TERM and doing nothing. Wait
for master to sent QUIT’
end
defined?(ActiveRecord::Base) and
ActiveRecord::Base.establish_connection
end
I have no idea where to even begin to troubleshoot this problem. Any
thoughts?