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 silently (no backtrace, no error detail). Log looks like:
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 `<main>' Process exited with status 1 State changed from starting to crashed
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?