在Heroku上部署Sinatra应用程序
我有简单的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=
我该如何解决它?
您需要Procfile
文件以及config.ru
告诉Heroku如何运行您的应用程序。下面是一个例子Procfile
的内容:
web: bundle exec ruby web.rb -p $PORT
编辑:这里是一个示例config.ru
从我西纳特拉/ Heroku的应用程序之一:
$:.unshift File.expand_path("../", __FILE__)
require 'rubygems'
require 'sinatra'
require './web'
run Sinatra::Application
您可能需要需要辛纳屈和rubygems它的工作。
下面是如何创建一个最小的末日应用程序,部署到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
我在尝试上面的时候遇到了这个错误“源:rubygems已被弃用,因为HTTP请求是不安全的 请尽可能将您的源代码更改为'https://rubygems.org',或'http: //rubygems.org'if if。' – JGallardo 2013-08-10 01:02:13
@JGallardo,感谢您的评论!Bundler希望您使用HTTPS而不是HTTP,因此您只需将'source:rubygems'行更改为'sour ce'https:// rubygems.org'。我在我的回答中也改变了这一点。干杯 – 2013-08-11 13:21:30
'heroku'宝石现在已被弃用(取代Heroku Toolbelt)。更多信息在这里:https://devcenter.heroku.com/articles/getting-started-with-ruby – 2014-07-23 14:29:09
我有这个问题的一些在过去时代,而这一切都是因为我没有包括与[应用] .RB &然后按下需要我config.ru文件到Heroku。即使我之后添加并重新启动,Heroku也绝不会选择它。
- 消灭在Heroku上的网站你的小应用程序(http://www.heroku.com)
-
然后从您的项目文件夹中删除远程
$ git remote rm heroku
然后重新创建应用程序
我刚刚有同样的问题报告的OP,这是解决问题的唯一的东西。谢谢! – 2012-07-20 08:36:08
这里一样的东西。看来,一旦你推送了一个缺少或不正确的config.ru的应用程序,唯一的解决办法是重新创建它。 – 2014-05-01 12:54:11
非常感谢您的帮助。这是唯一有效的工作。 – rails4sandeep 2017-05-26 08:13:31
通过添加宝石'heroku'Gemfile,我得到它的工作。没有Procfile需要。
作为一个更新,这里是一个略微我创建的更小的应用程序,并确认今天工作。这个薄宝石是不需要的,并且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
“heroku logs”有什么用处? – 2012-03-27 20:28:59
什么都没有。只有这个错误。 'heroku ps'表示没有正在运行的进程。 'heroku restart'没有帮助我 – demas 2012-03-27 20:36:35
我们可以知道问题是什么吗? – 2012-03-27 21:02:37