2012-03-27 151 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