在Heroku上部署Sinatra应用程序

dem*_*mas 17 ruby heroku sinatra

我有简单的Sinatra应用程序.

web.rb:

require 'sinatra'

get '/' do 
    "Hello" 
end
Run Code Online (Sandbox Code Playgroud)

的Gemfile:*

source :rubygems

gem 'sinatra', '1.1.0'
gem 'thin', '1.2.7'
Run Code Online (Sandbox Code Playgroud)

config.ru:

require './web'
run Sinatra::Application
Run Code Online (Sandbox Code Playgroud)

但是当我在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=
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

Pat*_*ity 25

以下是如何创建一个部署到heroku的最小sinatra应用程序:

app.rb:

require 'sinatra'

get '/' do
  "hello world"
end
Run Code Online (Sandbox Code Playgroud)

的Gemfile:

source 'https://rubygems.org'

gem 'heroku'
gem 'sinatra'
gem 'thin'
Run Code Online (Sandbox Code Playgroud)

config.ru:

require './app'
run Sinatra::Application
Run Code Online (Sandbox Code Playgroud)

在命令行中键入这些命令以进行部署(没有$标志):

$ 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
Run Code Online (Sandbox Code Playgroud)

然后测试你的应用:

$ curl <my-app-name>.heroku.com
Run Code Online (Sandbox Code Playgroud)

你应该看到:

hello world
Run Code Online (Sandbox Code Playgroud)


Eri*_*lin 17

你需要一个Procfile文件config.ru来告诉Heroku如何运行你的应用程序.以下是示例的内容Procfile:

web: bundle exec ruby web.rb -p $PORT
Run Code Online (Sandbox Code Playgroud)

Heroku Ruby有关Procfiles的文档

编辑:这config.ru是我的一个sinatra/Heroku应用程序的示例:

$:.unshift File.expand_path("../", __FILE__)
require 'rubygems'
require 'sinatra'
require './web'
run Sinatra::Application
Run Code Online (Sandbox Code Playgroud)

您可能需要使用sinatra和rubygems才能工作.


rpe*_*rce 10

我过去曾经多次遇到这个问题,而这一切都是因为我没有包含我的config.ru文件,需要[app] .rb然后推送到Heroku.即使我之后添加它并重新启动,Heroku也永远不会把它拿起来.

  • 我刚刚报告了OP报告的相同问题,这是解决问题的唯一方法.谢谢! (2认同)