Почему некоторые аспекты моего приложения Rails публично выдают исключение при развертывании в Heroku?

#ruby-on-rails #ruby #deployment #heroku

#ruby-on-rails #ruby #развертывание #heroku

Вопрос:

Я работаю над учебным пособием Майкла Хартла по Ruby on Rails (для Mac OSX 10.7.2 / Ruby 1.9.2 / Rails 3.1.1) и только что закончил главу 2, которая заканчивается развертыванием демонстрационного приложения Twitter в Heroku.

Кажется, что все работает правильно, когда я запускаю приложение локально, и я смог успешно развернуть приложение в Heroku в некотором качестве, потому что оно доступно здесь: http://rich-twitter-baby.heroku.com /

Однако я не могу понять, почему страницы /users и /microposts не отображаются публично (со списками пользователей и микропостов соответственно), как они это делают локально. Я перенес свою базу данных в Heroku и поместил туда информацию, и все, казалось, работало правильно, но я получаю это сообщение об ошибке при попытке общедоступного просмотра страниц.

Я попытался запустить «консоль heroku», но получил эту ошибку:

 Unable to attach to a dyno to open a console session.
Your application may have crashed.
Check the output of "heroku ps" and "heroku logs" for more information.
  

И в журналах указано ошибка H13, в то время как ps выглядит так:

 Process       State               Command
------------  ------------------  ------------------------------
web.1         idle for 1h         thin -p $PORT -e $RACK_ENV -R $HER..
  

Дайте мне знать, если у кого-нибудь есть какие-либо идеи или поможет дополнительная информация.

Спасибо!

Ответ №1:

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

Обычно они устраняются в течение нескольких часов, но это не должно происходить так часто, если вообще происходит.

Выполнение нового развертывания также обычно перезапускает все обратно для очистки.

Если это происходит постоянно, пытались ли вы запустить приложение локально в рабочем режиме, чтобы попытаться воспроизвести проблему

 rails server -e production
  

или добавление чего-то вроде дополнения Airbrake к вашему приложению для обнаружения ошибки.

Комментарии:

1. понял. изучу ситуацию с поддержкой heroku и рассмотрю предложенные вами альтернативы. Спасибо!

Ответ №2:

Проверьте свой журнал с помощью

 $> heroku logs
  

В командной строке вашей системы разработки, которую вы использовали для отправки в heroku.

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

Ответ №3:

Я связался со службой поддержки Heroku по поводу этой проблемы, и оказалось, что ответ был связан с тем, в какой стек развертывалось мое приложение. Я выполнил их обходной путь, и теперь все запущено. Вот полная информация от них:

Похоже, проблема в том, что вы используете Rails 3.1 и наш Bamboo stack; у нас есть полная поддержка конвейера ресурсов в нашем Cedar stack [1]. Поскольку это всего лишь демонстрационное приложение, простым решением является предварительная компиляция локально и фиксация файлов:

 rake assets:precompile 
git add -A 
git commit -m "precompiling assets" 
git push heroku master
  

Чтобы получить полную поддержку конвейера ресурсов, вам нужно создать свое приложение в стеке Cedar, а затем> повторить процесс, который вы сделали, чтобы заставить ваше приложение Bamboo работать.

[1]: http://devcenter.heroku.com/articles/rails31_heroku_cedar