Автозагрузка предупреждения ruby gem, может быть причиной ошибки приложения Heroku?
У меня очень простой сайт-прототип Ruby Serve, который отлично работает локально, но не работает на Heroku:
Aug 02 12:35:40 localp app/web.1: [2013-08-02 11:35:40] INFO WEBrick 1.3.1
Aug 02 12:35:40 localp app/web.1: [2013-08-02 11:35:40] INFO ruby 1.9.3 (2013-06-27) [x86_64-linux]
Aug 02 12:35:40 localp app/web.1: [2013-08-02 11:35:40] INFO WEBrick::HTTPServer#start: pid=2 port=4000
Aug 02 12:36:39 localp heroku/web.1: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
Aug 02 12:36:39 localp heroku/web.1: Stopping process with SIGKILL
Aug 02 12:36:41 localp heroku/web.1: Process exited with status 137
Aug 02 12:36:41 localp heroku/web.1: State changed from starting to crashed
Я думаю, что это может быть связано с тем, что гемы не загружаются должным образом, так как это локальное предупреждение, которое я получаю:
[2013-08-02 12:39:22] INFO WEBrick 1.3.1
[2013-08-02 12:39:22] INFO ruby 1.9.3 (2012-10-12) [x86_64-darwin12.2.0]
[2013-08-02 12:39:22] INFO WEBrick::HTTPServer#start: pid=79265 port=4000
WARN: serve autoloading 'slim' in a non thread-safe way; explicit require 'slim' suggested.
WARN: serve autoloading 'slim' in a non thread-safe way; explicit require 'slim' suggested.
WARN: serve autoloading 'slim' in a non thread-safe way; explicit require 'slim' suggested.
WARN: serve autoloading 'slim' in a non thread-safe way; explicit require 'slim' suggested.
WARN: tilt autoloading 'redcarpet' in a non thread-safe way; explicit require 'redcarpet' suggested.
WARN: tilt autoloading 'rdiscount' in a non thread-safe way; explicit require 'rdiscount' suggested.
127.0.0.1 - local [02/Aug/2013 12:40:10] "GET /wireframes/ HTTP/1.1" 200 - 0.2049
127.0.0.1 - local [02/Aug/2013 12:40:10] "GET /styles/style.css HTTP/1.1" 200 765 0.0018
127.0.0.1 - local [02/Aug/2013 12:40:10] "GET /favicon.ico HTTP/1.1" 404 31 0.0026
Я пытался явно требовать драгоценные камни, но я получаю то же сообщение об ошибке. Вот мой Gemfile:
source 'https://rubygems.org'
ruby '1.9.3'
gem 'serve', '1.5.2'
gem 'rack-contrib'
gem 'compass'
gem 'sass-globbing'
gem 'rdiscount', :require => 'rdiscount'
gem 'slim', :require => 'slim'
FWIW, вот мой Procfile:
web: bundle exec rackup config.ru -p $PORT
Я осмотрел все переполнение стека. Есть несколько ответов, но они касаются прекомпиляции ресурсов на Rails. Есть идеи, в чем может быть проблема?
1 ответ
WEBrick - веб-сервер Ruby, разработанный для разработки и не рекомендуемый для производственного использования. Это также многопоточный.
Попробуйте добавить gem "thin"
в ваш Gemfile. Heroku будет использовать Thin в качестве сервера, который не является многопоточным (по умолчанию, хотя он имеет многопоточную опцию), и ваш non thread-safe way
вероятно уйдет.