2013-06-23 2 views
3

Я не могу получить свое приложение, чтобы успешно начать работу в Heroku. Вот основы:Rails Unicorn Web Server не начнется на Heroku

  • Рубин 1.9.3p392 (когда я бегу рубин -v в моем Dev терминале это то, что возвращается, однако журналы Heroku, кажется, указывают Руби 2.0.0)
  • Rails 3.2.13
  • Unicorn Web Server
  • Postgresql DB

Я развертывается мое приложение Heroku, но получение «произошла ошибка в приложении, и ваша страница не может быть обслужен.»

Вот заключительные записи в журнале Heroku:

+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.0.0/bin/unicorn:23:in `<main>' 
+00:00 heroku[web.1]: Process exited with status 1 
+00:00 heroku[web.1]: State changed from starting to crashed 

Когда я пытаюсь запустить Heroku пс, я получаю:

=== web (1X): `bundle exec unicorn -p $PORT -c ./config/unicorn.rb` 
web.1: crashed 2013/06/22 17:31:22 (~ 6m ago) 

Я думаю это возможно проблема, вытекающие из этого line в моем приложении/config/application.rb

ENV.update YAML.load(File.read(File.expand_path('../application.yml', __FILE__))) 

T его строка полезна в dev для чтения моих переменных среды из моего файла application.yml. Однако для целей безопасности я gitignore это из моего репо и вижу, что журналы Heroku жалуются, что этот файл не найден. Для производства, я поставил свои переменные окружения в Heroku с помощью:

heroku config:add SECRET_TOKEN=a_really_long_number 

Вот мое приложение/Config/unicorn.rb

# config/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 send QUIT' 
    end 

    defined?(ActiveRecord::Base) and 
    ActiveRecord::Base.establish_connection 
end 

А вот мой PROCFILE

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

И мое приложение /config/unicorn.rb и настройки параметров Procfile исходят от https://devcenter.heroku.com/articles/rails-unicorn

Основано на некотором IRC я установил Фигаро, но, увы, это не решило проблему.

Если вы хотите увидеть полное приложение, он размещен на сайте: https://github.com/mxstrand/mxspro

Если у вас есть указания на то, может быть неправильно или как я мог бы устранить в дальнейшем я буду очень признателен. Спасибо.

+0

Heroku недавно изменен с помощью Ruby, 2.0.0 по умолчанию для новых приложений.Чтобы контролировать это, добавьте 'ruby '1.9.3'' в свой Gemfile. –

ответ

1

Вы находитесь на вашем анализе. Я только что вытащил ваш код, сделал некоторые настройки, и теперь это началось на Heroku.

Мои единственные изменения;

config/application.rb - перемещенные линии 12 & 13 to config/environments/development.rb - если вы используете application.yml для переменных среды разработки, сохраните их таким образом. Другой вариант - сделать строку 13 условной для вашей среды разработки с if Rails.env.development? в конце.

config/environments/production.rb - линия 33 отсутствует # метка предшествующего

+1

fyi: У вас есть запрос на pull, который решает эти проблемы. :) –

+1

John - большое спасибо. Ваши исправления работали и на меня, очень добрые. (Мне также нужно было запустить rakku rak db: migrate). –

+0

@John Beynon, можете ли вы указать, какое содержимое этих строк вы изменили, если этот репозиторий Github удален? – CodeBiker