2012-03-27 199 views
14

我有简单的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 

但是当我部署我的AP p在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= 

我该如何解决它?

+0

“heroku logs”有什么用处? – 2012-03-27 20:28:59

+0

什么都没有。只有这个错误。 'heroku ps'表示没有正在运行的进程。 'heroku restart'没有帮助我 – demas 2012-03-27 20:36:35

+0

我们可以知道问题是什么吗? – 2012-03-27 21:02:37

回答

14

您需要Procfile文件以及config.ru告诉Heroku如何运行您的应用程序。下面是一个例子Procfile的内容:

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

Heroku Ruby docs on Procfiles

编辑:这里是一个示例config.ru从我西纳特拉/ Heroku的应用程序之一:

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

您可能需要需要辛纳屈和rubygems它的工作。

+0

我已添加此文件,但错误依然存在。 – demas 2012-03-27 20:22:13

+0

@demas我已经添加了一个示例config.ru文件,如果有帮助。你的Gemfile看起来很稳固(虽然这是一个旧版本的sinatra,不知道它是否会起作用) – 2012-03-27 20:32:30

+0

你可以在Github上创建最小化的Sinatra应用吗?我已经尝试了您的更改,但它并没有帮助我 – demas 2012-03-27 20:35:13

0

尝试重新启动的Heroku

heroku restart 

这里更多的讨论: unknown heroku error

+0

我试过了,但是它并没有帮助我 – demas 2012-03-27 20:37:09

25

下面是如何创建一个最小的末日应用程序,部署到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 

和你守LD见:

hello world 
+0

我在尝试上面的时候遇到了这个错误“源:rubygems已被弃用,因为HTTP请求是不安全的 请尽可能将您的源代码更改为'https://rubygems.org',或'http: //rubygems.org'if if。' – JGallardo 2013-08-10 01:02:13

+0

@JGallardo,感谢您的评论!Bundler希望您使用HTTPS而不是HTTP,因此您只需将'source:rubygems'行更改为'sour ce'https:// ruby​​gems.org'。我在我的回答中也改变了这一点。干杯 – 2013-08-11 13:21:30

+0

'heroku'宝石现在已被弃用(取代Heroku Toolbelt)。更多信息在这里:https://devcenter.heroku.com/articles/getting-started-with-ruby – 2014-07-23 14:29:09

10

我有这个问题的一些在过去时代,而这一切都是因为我没有包括与[应用] .RB &然后按下需要我config.ru文件到Heroku。即使我之后添加并重新启动,Heroku也绝不会选择它。

  • 消灭在Heroku上的网站你的小应用程序(http://www.heroku.com
  • 然后从您的项目文件夹中删除远程

    $ git remote rm heroku 
    
  • 然后重新创建应用程序

+2

我刚刚有同样的问题报告的OP,这是解决问题的唯一的东西。谢谢! – 2012-07-20 08:36:08

+0

这里一样的东西。看来,一旦你推送了一个缺少或不正确的config.ru的应用程序,唯一的解决办法是重新创建它。 – 2014-05-01 12:54:11

+0

非常感谢您的帮助。这是唯一有效的工作。 – rails4sandeep 2017-05-26 08:13:31

0

通过添加宝石'heroku'Gemfile,我得到它的工作。没有Procfile需要。

0

作为一个更新,这里是一个略微我创建的更小的应用程序,并确认今天工作。这个薄宝石是不需要的,并且Procfile不需要获得初始工作应用程序。

的Gemfile

source 'https://rubygems.org' 
gem 'sinatra' 

config.ru

require './app' 

run Sinatra::Application 

注:需要行使用,而不是'应用 './app'。

app.rb

require 'sinatra' 

get '/' do 
    'Hello, World! Find me in app.rb' 
end 

如果你想使用这个模板,你可以把它复制,捆绑,并推动混帐回购协议。

$ 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 
相关问题