Развертывание приложения sinatra (с config.ru) на стеке кедровых героев - PullRequest
8 голосов
/ 01 декабря 2011

Я пытаюсь реорганизовать свой код sinatra, чтобы разделить мой основной файл на отдельные файлы, используя несколько советов из этого ответа , и у меня возникают проблемы при развертывании на heroku.

Ранее у меня не было config.ru файла, а просто использовался мой Procfile, который был:

web: bundle exec ruby web.rb -p $PORT

согласно этой статье .

Из рефактора я теперь изменил свой Procfile на

web: bundle exec thin -R config.ru start -p $PORT

С моим config.ru файлом

root = ::File.dirname(__FILE__)
require ::File.join( root, 'web' )
run MyApp.new

И мой web.rb файл содержится вокруг определения класса

class MyApp < Sinatra::Application
  # ...
end

Это работает на моем локальном компьютере для разработки, но при развертывании на heroku я получаю

2011-12-01T11:21:54+00:00 app[web.1]: bundler: command not found: thin
2011-12-01T11:21:54+00:00 app[web.1]: Install missing gem executables with `bundle install`
2011-12-01T11:21:56+00:00 heroku[web.1]: State changed from starting to crashed
2011-12-01T11:22:01+00:00 heroku[router]: Error H10 (App crashed) -> GET [my app].herokuapp.com/ dyno= queue= wait= service= status=503 bytes=
2011-12-01T11:22:02+00:00 heroku[router]: Error H10 (App crashed) -> GET [my app].herokuapp.com/favicon.ico dyno= queue= wait= service= status=503 bytes=

Разве тонкий не установлен на героку? Или есть другой способ запустить мое приложение на героку с изменениями?

1 Ответ

9 голосов
/ 01 декабря 2011

Мне пришлось обновить Procfile, потому что RACK_ENV не передается в среду heroku. Procfile стало:

web: bundle exec thin -R config.ru start -p $PORT -e $RACK_ENV
...