【问题标题】:Deploy Sinatra app to heroku将 Sinatra 应用程序部署到 heroku
【发布时间】:2012-11-03 04:29:42
【问题描述】:

我正在尝试从heroku docs 部署基本的 sinatra 应用程序。该应用程序似乎正在正确部署和启动,但我看不到它。我错过了什么?

# Gemfile
source 'http://rubygems.org'
gem 'sinatra'

# config.ru
require './hello'
run Sinatra::Application

# hello.rb 
require 'sinatra'

get '/' do
  "Hello World!"
end

然后我运行:

$ bundle install
$ git init
$ git add --all
$ git commit -m "initial commit"
$ heroku create
$ git push heroku master
$ heroku open

问题是,我得到的只是“Heroku | 没有这样的应用程序”错误。然后我尝试:

$ heroku restart
$ heroku logs

你可以在下面看到结果:

2012-11-02T06:19:24+00:00 heroku[web.1]: Unidling
2012-11-02T06:19:24+00:00 heroku[web.1]: State changed from down to starting
2012-11-02T06:19:27+00:00 heroku[web.1]: Starting process with command `bundle exec rackup config.ru -p 38715`
2012-11-02T06:19:31+00:00 app[web.1]: [2012-11-02 06:19:31] INFO  WEBrick 1.3.1
2012-11-02T06:19:31+00:00 app[web.1]: [2012-11-02 06:19:31] INFO  ruby 1.9.2 (2011-07-09 [x86_64-linux]
2012-11-02T06:19:31+00:00 app[web.1]: [2012-11-02 06:19:31] INFO WEBrick::HTTPServer#start: pid=2 port=38715
2012-11-02T06:19:32+00:00 heroku[web.1]: State changed from starting to up

【问题讨论】:

  • 有时我不得不在推送后等待,尤其是对于新应用程序。现在怎么样了?
  • 我完全按照你的代码,它似乎工作正常。
  • 嗯,我会再试一次,也许 heroku 出了问题。

标签: heroku sinatra


【解决方案1】:

我刚才尝试了这些完全相同的步骤,效果很好。不知道之前出了什么问题。

昨晚我改成了:

# hello.rb 
require 'sinatra'

class HelloApp < Sinatra::Base
  get '/' do
    "Hello World!"
  end
end

# config.ru
require './hello'
run HelloApp

它奏效了。不知道为什么,但确实如此。奇怪。

【讨论】:

  • 你原来没有class HelloApp &lt; Sinatra::Base吗?如果不是,这可能是这里的问题,你会告诉它运行HelloApp 而没有告诉它HelloApp 是什么。您可以随时尝试heroku logs 并检查是否有任何错误消息。
  • 我在顶部提供的链接中的基本“hello world”应用程序没有定义从 hello.rb 中的 Sinatra::Base 继承的类,它只是在配置中调用 run Sinatra::Application。 ru,因此当它不起作用时我会感到困惑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多