2013-12-24 10 views
0

У меня проблема с Heroku. Все было хорошо в течение некоторого времени, но позже приложение все время рушилось. Не было никаких изменений, которые могли бы вызвать такое поведение. Вот что Heroku журналы говорят:Приложение аварийно завершает работу - Heroku

2013-12-24T13:02:33.056291+00:00 heroku[web.1]: State changed from crashed to starting 
2013-12-24T13:02:39.813510+00:00 heroku[web.1]: Starting process with command `bundle exec unicorn -c ./config/unicorn.rb` 
2013-12-24T13:02:41.529872+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/unicorn-4.6.3/lib/unicorn.rb:5:in `require': cannot load such  file -- rack (LoadError) 
2013-12-24T13:02:41.529872+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/unicorn-4.6.3/lib/unicorn.rb:5:in `<top (required)>' 
2013-12-24T13:02:41.529872+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/unicorn-4.6.3/lib/unicorn/launcher.rb:9:in `require' 
2013-12-24T13:02:41.529872+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/unicorn-4.6.3/bin/unicorn:3:in `require' 
2013-12-24T13:02:41.529872+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/unicorn-4.6.3/lib/unicorn/launcher.rb:9:in `<top ( required)>' 
2013-12-24T13:02:41.529872+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/unicorn-4.6.3/bin/unicorn:3:in `<top (required)>' 
2013-12-24T13:02:41.529872+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/bin/unicorn:23:in `load' 
2013-12-24T13:02:41.529872+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/bin/unicorn:23:in `<main>' 
2013-12-24T13:02:42.643135+00:00 heroku[web.1]: Process exited with status 1 
2013-12-24T13:02:42.658659+00:00 heroku[web.1]: State changed from starting to crashed 

Если я пытаюсь сделать Heroku запустить грабли БД: мигрировать, я получаю это:

/app/vendor/bundle/ruby/1.9.1/bin/rake:23:in `load': cannot load such file --  /app/vendor/bundle/ruby/1.9.1/specifications/bin/rake (LoadError) 
from /app/vendor/bundle/ruby/1.9.1/bin/rake:23:in `<main>' 

После Heroku запустить рельсы с, я получаю это :

/app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.12/lib/rails.rb:14:in `require': cannot load such file -- action_dispatch/railtie (LoadError) 
from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.12/lib/rails.rb:14:in `<top (required)>' 
from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.12/lib/rails/all.rb:1:in `require' 
from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.12/lib/rails/all.rb:1:in `<top (required)>' 
from /app/config/application.rb:3:in `require' 
from /app/config/application.rb:3:in `<top (required)>' 
from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.12/lib/rails/commands.rb:39:in `require' 
from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.12/lib/rails/commands.rb:39:in `<top (required)>' 
from script/rails:6:in `require' 
from script/rails:6:in `<main>' 

Было бы здорово, если бы кто-нибудь мог с этим помочь. Благодаря!

UPD: Вот мой конфиг/unicorn.rb:

timeout 30 
preload_app true 
worker_processes Integer(ENV['UNICORN_WORKERS'] || 3) 
listen ENV['PORT'], :backlog => Integer(ENV['UNICORN_BACKLOG'] || 16) 

before_fork do |server, worker| 
    if defined?(ActiveRecord::Base) 
    ActiveRecord::Base.connection.disconnect! 
    Rails.logger.info('Disconnected from ActiveRecord') 
    end 

    sleep 1 
end 

after_fork do |server, worker| 
    if defined?(ActiveRecord::Base) 
    ActiveRecord::Base.establish_connection 
    Rails.logger.info('Connected to ActiveRecord') 
    end 
end 

и вот мой PROCFILE:

web: bundle exec unicorn -c ./config/unicorn.rb 
+2

Эй, у вас есть/unicorn.rb право файл конфигурации? Все, что настроено? – Niall

+0

и если вы запустите * webrick * все в порядке? –

+0

да, с webrick все в порядке – user3132587

ответ

0

Я не думаю, что ваш Procfile настроен правильно. Per the Heroku Unicorn docs, я думаю, вам нужно определить порт в вашем Procfile.

Вот мой unicorn.rb файл, который прекрасно работает на единорога, и соответствующий Procfile:

# config/unicorn.rb 

worker_processes Integer(ENV['WEB_CONCURRENCY'] || 3) 
timeout Integer(ENV['WEB_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 

PROCFILE

web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb 
+0

Спасибо за консультацию. Я пробовал, и это не сработало. Я попытался развернуть приложение на другой герой (с тем же конфигом), и все работает. Странный... – user3132587

Смежные вопросы