2012-06-09 2 views
0

Все мои файлы можно найти на GitHub: https://github.com/Integralist/Passage (на всякий случай вам нужно посмотреть, с чем я работаю).Не удается получить базовое приложение Ruby/Sinatra, работающее с Heroku?

Я новичок в Heroku, и я пробовал следовать инструкциям по загрузке приложения Sinatra, но он просто не запускается, и когда я посещаю URL-адрес приложения, я получаю общее сообщение «Ошибка приложения».

Моя установка процесс был следующим:

  • heroku login
  • heroku create --stack cedar

Создать config.ru файл и добавьте контент ...

require 'app' 
run Sinatra::Application 

Создать Файл Gemfile (без расширения файла) и добавьте c ontent ...

source 'http://rubygems.org' 
gem 'sinatra', '1.3.2' 
gem 'thin', '1.3.1' 

Откройте терминал (я бегу Mac OS X) и выполнить: bundle install, который, кажется, чтобы создать дубликат Gemfile, но на этот раз с расширением .lock файла? Этот другой Gemfile теперь имеет следующее содержание ...

GEM 
    remote: http://rubygems.org/ 
    specs: 
    daemons (1.1.8) 
    eventmachine (0.12.10) 
    rack (1.4.1) 
    rack-protection (1.2.0) 
     rack 
    sinatra (1.3.2) 
     rack (~> 1.3, >= 1.3.6) 
     rack-protection (~> 1.2) 
     tilt (~> 1.3, >= 1.3.3) 
    thin (1.3.1) 
     daemons (>= 1.0.9) 
     eventmachine (>= 0.12.6) 
     rack (>= 1.0.0) 
    tilt (1.3.3) 

PLATFORMS 
    ruby 

DEPENDENCIES 
    sinatra (= 1.3.2) 
    thin (= 1.3.1) 

Тогда я создать Procfile (без расширения файла) и добавьте контент: web: bundle exec ruby app.rb -p $PORT (app.rb, очевидно, имя моего основного файла приложения).

Я затем сцениваю/фиксирую/нажимаю свои файлы, используя Git для соответствующего репо Героку.

Но если я бегу heroku ps я получаю ...

=== web: `bundle exec ruby app.rb -p` 
web.1: crashed for 1m 

И потом, если я бегу heroku logs я получаю ...

2012-06-09T18:35:41+00:00 heroku[slugc]: Slug compilation started 
2012-06-09T18:36:37+00:00 heroku[api]: Add LANG, PATH, RACK_ENV, GEM_PATH config by [email protected] 
2012-06-09T18:36:37+00:00 heroku[api]: Release v2 created by [email protected] 
2012-06-09T18:36:38+00:00 heroku[api]: Release v3 created by [email protected] 
2012-06-09T18:36:38+00:00 heroku[api]: Deploy e26921b by [email protected] 
2012-06-09T18:36:38+00:00 heroku[web.1]: State changed from created to starting 
2012-06-09T18:36:38+00:00 heroku[slugc]: Slug compilation finished 
2012-06-09T18:36:40+00:00 heroku[web.1]: Starting process with command `bundle exec ruby app.rb -p` 
2012-06-09T18:36:41+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/main.rb:15:in `<class:Application>': missing argument: -p (OptionParser::MissingArgument) 
2012-06-09T18:36:41+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/main.rb:4:in `<module:Sinatra>' 
2012-06-09T18:36:41+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/main.rb:3:in `<top (required)>' 
2012-06-09T18:36:41+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra.rb:5:in `require' 
2012-06-09T18:36:41+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra.rb:5:in `<top (required)>' 
2012-06-09T18:36:41+00:00 app[web.1]: from app.rb:12:in `require' 
2012-06-09T18:36:41+00:00 app[web.1]: from app.rb:12:in `<main>' 
2012-06-09T18:36:42+00:00 heroku[web.1]: Process exited with status 1 
2012-06-09T18:36:42+00:00 heroku[web.1]: State changed from starting to crashed 
2012-06-09T18:36:42+00:00 heroku[web.1]: State changed from crashed to created 
2012-06-09T18:36:42+00:00 heroku[web.1]: State changed from created to starting 
2012-06-09T18:36:44+00:00 heroku[web.1]: Starting process with command `bundle exec ruby app.rb -p` 
2012-06-09T18:36:45+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/main.rb:15:in `<class:Application>': missing argument: -p (OptionParser::MissingArgument) 
2012-06-09T18:36:45+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/main.rb:4:in `<module:Sinatra>' 
2012-06-09T18:36:45+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/main.rb:3:in `<top (required)>' 
2012-06-09T18:36:45+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra.rb:5:in `require' 
2012-06-09T18:36:45+00:00 app[web.1]: from /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra.rb:5:in `<top (required)>' 
2012-06-09T18:36:45+00:00 app[web.1]: from app.rb:12:in `require' 
2012-06-09T18:36:45+00:00 app[web.1]: from app.rb:12:in `<main>' 
2012-06-09T18:36:47+00:00 heroku[web.1]: Process exited with status 1 
2012-06-09T18:36:47+00:00 heroku[web.1]: State changed from starting to crashed 
2012-06-09T18:42:09+00:00 heroku[router]: Error H10 (App crashed) -> GET furious-wind-9309.herokuapp.com/ dyno= queue= wait= service= status=503 bytes= 
2012-06-09T18:42:09+00:00 heroku[router]: Error H10 (App crashed) -> GET furious-wind-9309.herokuapp.com/favicon.ico dyno= queue= wait= service= status=503 bytes= 
2012-06-09T18:42:38+00:00 heroku[router]: Error H10 (App crashed) -> GET furious-wind-9309.herokuapp.com/ dyno= queue= wait= service= status=503 bytes= 
2012-06-09T18:42:39+00:00 heroku[router]: Error H10 (App crashed) -> GET furious-wind-9309.herokuapp.com/favicon.ico dyno= queue= wait= service= status=503 bytes= 

Может кто-то объяснить, в чем проблема и как я могу исправьте пожалуйста.

Спасибо.

+0

Что находится в вашем 'app.rb'? Поскольку вы используете 'Procfile', ваш' config.ru' не инициализирует сервер, 'app.rb' является (из команды' ruby ​​app.rb'). – redhotvengeance

ответ

1
/app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.2/lib/sinatra/main.rb:15:in `<class:Application>': missing argument: -p (OptionParser::MissingArgument) 

Это ошибка, которая дает вам трассировку стека. Когда он работает bundle exec ruby app.rb -p, для -p нет аргументов. Вам нужно что-то вроде bundle exec ruby app.rb -p 3000 (для запуска на порте 3000). Возможно, глобальная переменная $ PORT не определяется?

EDIT

Хотя форма heroku's docs on the Procfile:

You can reference other environment variables populated by Heroku, most usefully the $PORT variable, in the command. 

Попробуйте делать raise $PORT.inspect, а затем нажав на Heroku. Это сбой, но, надеюсь, с лучшей картиной того, что он пытается сделать.

+0

С Heroku вы обязательно должны использовать $ PORT, так как динамический характер Heroku означает, что ему нужно передать порт для приложения, и он не имеет статически доступных портов. – redhotvengeance

+1

Глядя на [рассматриваемый файл Procfile] (https://github.com/Integralist/Passage/blob/9ea1914ac1edf39a9fa08af7ffa2332b1b453a44/Procfile), '$ PORT' фактически вообще отсутствует (несмотря на то, что говорит этот вопрос). – matt

+0

Джордж, @matt прав! Это в значительной степени сужает проблему. – redhotvengeance

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