Разверните приложение Sinatra на Heroku
У меня есть простое приложение Sinatra.
web.rb:
require 'sinatra'
get '/' do
"Hello"
end
Gemfile: *
source :rubygems
gem 'sinatra', '1.1.0'
gem 'thin', '1.2.7'
config.ru:
require './web'
run Sinatra::Application
Но когда я развожу свое приложение на Heroku, я получу ошибку в журналах:
2012-03-27T19:17:48+00:00 heroku[router]: Error H14 (No web processes running) -> GET furious-waterfall-6586.herokuapp.com/ dyno= queue= wait= service= status=503 bytes=
Как я могу это исправить?
Ответы
Ответ 1
Вам нужен файл Procfile
рядом с вашим config.ru
, чтобы сообщить Heroku, как запустить приложение. Ниже приведен пример примера Procfile
:
web: bundle exec ruby web.rb -p $PORT
Документы Heroku Ruby на Procfiles
EDIT: Здесь образец config.ru
из одного из моих приложений sinatra/Heroku:
$:.unshift File.expand_path("../", __FILE__)
require 'rubygems'
require 'sinatra'
require './web'
run Sinatra::Application
Вам может потребоваться потребовать от нее синатра и рубигемы.
Ответ 2
Здесь, как создать минимальное приложение sinatra, которое развертывается в heroku:
app.rb:
require 'sinatra'
get '/' do
"hello world"
end
Gemfile:
source 'https://rubygems.org'
gem 'heroku'
gem 'sinatra'
gem 'thin'
config.ru:
require './app'
run Sinatra::Application
Введите эти команды в командной строке для развертывания (без значков $
):
$ bundle install
$ git init
$ git add -f app.rb Gemfile Gemfile.lock config.ru
$ git commit -am "initial commit"
$ heroku create <my-app-name>
$ git push heroku master
Затем проверьте свое приложение:
$ curl <my-app-name>.heroku.com
и вы должны увидеть:
hello world
Ответ 3
У меня была эта проблема несколько раз в прошлом, и все это потому, что я не включил свой файл config.ru с требованием [app].rb, а затем нажав на Heroku. Даже если я добавлю его позже и перезапустим, Heroku никогда не подберет его.
Ответ 4
попытайтесь перезапустить герою
heroku restart
здесь больше обсуждений:
неизвестная ошибка героя
Ответ 5
Добавив драгоценный камень "heroku" в Gemfile, я получил его работу. Не требуется Procfile.
Ответ 6
Как обновление, вот несколько более минимальное приложение, которое я создал, и подтвердил, что он работает на сегодняшний день. Тонкий камень не нужен, и Procfile не нужен, чтобы получить начальное рабочее приложение.
Gemfile
source 'https://rubygems.org'
gem 'sinatra'
config.ru
require './app'
run Sinatra::Application
Примечание. Строка require использует "./app" вместо "app".
app.rb
require 'sinatra'
get '/' do
'Hello, World! Find me in app.rb'
end
Если вы хотите использовать этот шаблон, вы можете скопировать его, расслоить и нажать Git repo.
$ git init
$ git add .
$ git commit -m "initial sinatra app"
$ bundle
$ git add Gemfile.lock
$ git commit -m "bundle install"
$ heroku create
$ git push heroku master
$ heroku open