簡體   English   中英

Ruby Sinatra/Postgres - 無法使用 PG.connect 連接到 heroku 數據庫?

[英]Ruby Sinatra/Postgres - can't connect to heroku database with PG.connect?

我正在嘗試使用 Sinatra 和 PostgreSQL 在 Heroku 上建立一個站點。 它在本地工作(連接到本地數據庫),但是在將它推送到 Heroku 並更改我的PG.connect以反映這一點后,當頁面嘗試訪問數據庫時,我收到內部服務器錯誤

require 'uri'
require 'pg'

uri = URI.parse(ENV['DATABASE_URL'])

def db(uri)
  begin
    connection = PG.connect(uri.hostname, uri.port, nil, nil, uri.path[1..-1], uri.user, uri.password)
    yield(connection)
  ensure
    connection.close
  end
end

我很確定這些解析正確,因為ENV['DATABASE_URL']顯示了我期望的完整postgres://user:password@host:port/database信息,如果我在 IRB uri.hostname 中做同樣的事情, ui.port 等都返回預期的內容。

這是我第一次嘗試讓網站在 Heroku 上運行,所以我什至不知道如何解決這個問題。 (我昨天在谷歌上搜索了大約所有內容。)

heroku pg結果:

=== DATABASE_URL
Plan:        Hobby-dev
Status:      Available
Connections: 0/20
PG Version:  9.4.2
Created:     2015-05-30 19:24 UTC
Data Size:   17.7 MB
Tables:      5
Rows:        9320/10000 (In compliance, close to row limit)
Fork/Follow: Unsupported
Rollback:    Unsupported

當我從 cli 執行heroku pg:psql <database>時,所有表都會顯示出來。

我看到的一些答案說要將database.yml添加到我的根應用程序目錄中,因此:

production:
  adapter: 'postgresql'
  database: '<database>'
  host: ENV['DATABASE_URL']
  username: '<username>'

我可能遺漏了一些簡單的東西,但我還沒有在 Heroku 上看到 Sinatra/PSQL 的完整指南——沒有專門涉及設置和連接到數據庫的內容。 (一切似乎都與 Rails 相關。)

在您的database.yml文件中,您需要為host條目指定正確的host 您正在傳遞DATABASE_URL存儲的內容(類似於postgres://user:password@host:port/database ),但它應該只是主機。

如果它不是 PostgreSQL 的默認端口,您還需要指定一個端口。

編輯:還應該指出您是否打算將主機(或其他任何東西 - 您肯定應該存儲用戶名和密碼)在您需要包裝它的環境變量中,例如<%= ENV['HOST'] %> ,而不僅僅是ENV['HOST'] (即你在上面的 database.yml 摘錄中的內容)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM