Разверните приложение 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 никогда не подберет его.

  • Уничтожьте свое маленькое приложение на сайте Heroku (http://www.heroku.com)
  • Затем удалите удаленный файл из папки проекта

    $ git remote rm heroku
    
  • Затем заново создайте приложение

Ответ 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