2014-10-27 23 views
1

我想在heroku上部署一個小應用。部署工作正常,並且在我的本地環境中運行時沒有問題。然而,在生產中,應用程序立即崩潰,拋出「應用程序錯誤」。需要幫助使用數據映射器部署一個sinatra應用到heroku,沒有創建表格

我懷疑問題是沒有創建數據庫表的事實(當我看着關於heroku/psql的統計信息時,它表示:Tables)。但我不知道爲什麼。該代碼是在github從我app.rb文件

require 'sinatra' 
require 'haml' 
require 'data_mapper' 
require "date" 
require "pg" 

class Note 
include DataMapper::Resource 
property :id, Serial 
property :content, Text, :required => true 
property :status, Integer 
property :created_at, DateTime 
property :updated_at, DateTime 
end 

configure do 
DataMapper.setup(:default, ENV['postgres://coeastaxltnwlx:[email protected]com:5432/d7n7n4iggsqnke'] || "sqlite3://#{Dir.pwd}/development.db") 
DataMapper.finalize.auto_upgrade! 
end 

https://github.com/valentin-zambelli/kanban-for-students/tree/master

快照並從寶石文件

source "https://rubygems.org" 
ruby "2.1.2" 

gem "sinatra" 
gem "thin" 
gem "haml" 
gem 'data_mapper' 
gem "pg" 
gem "dm-postgres-adapter" 

下面是從$ Heroku的日誌中的最後幾個錯誤消息我得到

2014-10-27T10:55:48.591707+00:00 heroku[web.1]: Process exited with status 1 

2014-10-27T10:55:48.600652+00:00 heroku[web.1]: State changed from starting to crashed 

2014-10-27T10:55:55.697970+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET  path="/" host=murmuring-waters-2400.herokuapp.com request_id=1a3e9d90-c9f2-4cdc-842b-55d3152089ba  fwd="83.64.207.92" dyno= connect= service= status=503 bytes= 

2014-10-27T10:55:56.508412+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=murmuring-waters-2400.herokuapp.com request_id=d83bdf15-c09c-4919-ab05-30b862199323 fwd="83.64.207.92" dyno= connect= service= status=503 bytes= 

2014-10-27T10:56:06.872347+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=murmuring-waters-2400.herokuapp.com request_id=2e4a1984-c1ea-4234-8331-3f6a6f217137 fwd="54.161.222.26" dyno= connect= service= status=503 bytes= 

任何幫助非常感謝!

回答

0

我認爲問題出在DataMapper.setup方法調用。您正在查找ENV對象(環境變量集合)中的數據庫URL,但這不是傳遞環境變量的名稱(DATABASE_URL),而是將實際URL複製到那裏。你應該避免把它放在你的代碼中。

嘗試類似:

DataMapper.setup(:default, ENV['DATABASE_URL'] || "sqlite3://#{Dir.pwd}/development.db") 
+0

謝謝,這個問題得到了解決!我創建了一個名爲DATABASE_URL的常量並將其用於該方法中。 – 2014-10-27 20:54:05

相關問題