Приложение Heroku Sinatra постоянно падает и не может использовать консоль - PullRequest
2 голосов
/ 10 февраля 2011

У меня проблемы с приложением Sinatra, которое я пытаюсь развернуть в Heroku - это мой первый раз с Sinatra и Heroku.

У меня есть файл .gems с одной строкой: "sinatra", а также файл config.ru со следующими строками:

require 'myapplication'
run Sinatra::Application

После нажатия на heroku и перехода к URL я получаю страницу с надписью «App Crashed» и следующий текст:

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

Выходные данные из "logos heroku":

2011-02-10T01:33:24-08:00 app[web.1]:   from ./myapplication.rb:3
2011-02-10T01:33:24-08:00 app[web.1]:   from /usr/ruby1.8.7/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in <code>gem_original_require'
2011-02-10T01:33:24-08:00 app[web.1]:   from /usr/ruby1.8.7/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in</code>require'
2011-02-10T01:33:24-08:00 app[web.1]:   from config.ru:2
<-- TEXT SNIPPED -->
2011-02-10T01:33:24-08:00 app[web.1]:   from /home/heroku_rack/heroku.ru:1:in `new'
2011-02-10T01:33:24-08:00 app[web.1]:   from /home/heroku_rack/heroku.ru:1
2011-02-10T01:33:25-08:00 heroku[web.1]: State changed from starting to crashed
2011-02-10T01:33:32-08:00 heroku[nginx]: GET / HTTP/1.1 | 75.56.61.69 | 3310 | http | 500

Где 3-я строка myapplication.rb - это «require» models », где« models.rb »существует в том же каталоге, что и« myapplication.rb ».

Также всякий раз, когда я запускаю команду «heroku console», я получаю следующее:

Your application is too busy to open a console session.
Console sessions require an open dyno to use for execution.

Я пробовал разные варианты, чтобы попытаться убрать это, но пока не удалось.

Спасибо за любую помощь!

Ответы [ 2 ]

0 голосов
/ 24 января 2012

Если вы работаете в одном из стеков Heroku, использующих версии Ruby 1.9.x (в отличие от более старых версий 1.8.x), знайте о новой директиве require_relative с 1.9, которую вы должны использовать ссылаться на файлы в путях относительно вашего текущего файла.

Это сбило меня с толку, потому что я локально разрабатывал с 1.8.x

Если вы хотите, чтобы он работал как для 1.8.x, так и для 1.9.x, вы можете сделать что-то вроде:

require "#{File.dirname(__FILE__)}/another_referenced_rb_file_in_same_directory"
0 голосов
/ 12 февраля 2011

У меня та же проблема, так что это не полный ответ, но, возможно, это поможет.Если вы просто использовали heroku logs, вы получите только около 20 (или, может быть, 50) строк вывода.Ваша трассировка ошибок не выглядит так, как будто она начинается с фактической ошибки, так как она начинается «с», что, по моему ограниченному опыту, указывает на то, что это не источник.Если вы еще этого не сделали, попробуйте heroku logs -n 200 или более, чтобы получить более длинную трассировку, и найдите «Errno» или «ERROR» и так далее.Это не поможет с консольной проблемой, но, по крайней мере, это может сказать вам, почему ваше приложение не работает.

...