2015-12-21 98 views
1

當我嘗試從我的Sinatra應用程序連接到我的PostgreSQL數據庫時,出現「連接不良」。我使用Heroku來部署應用程序,而我的工作站目前是Windows。我試過了,還是同樣的錯誤信息:Sinatra Heroku PostgreSQL連接不好

heroku addons:create heroku-postgresql:hobby-dev 

從日誌:

PG::ConnectionBad - could not connect to server: Connection refused 
Is the server running on host "localhost" (127.0.0.1) and accepting TCP/IP connections on port 5432? 

從配置/ enviironments.rb:

db = URI.parse(ENV["DATABASE_URL"] || "postgres://localhost") 

ActiveRecord::Base.establish_connection(
    :adapter => db.scheme == 'postgres' ? 'postgresql' : db.scheme, 
    :host => db.host, 
    :username => db.user, 
    :password => db.password, 
    :database => db.path[1..-1], 
    :encoding => 'utf8' 
) 

這是主要的app.rb文件:

require 'sinatra' 
require 'haml' 
require 'sass/plugin/rack' 
require 'pony' 
require 'active_record' 
require 'pg' 
require 'postgresql' 
require './vars.rb' 
require './includes/functions' 
require './config/environments' 
Sass::Plugin.options[:style] = :compressed 
use Sass::Plugin::Rack 
set :haml, :format => :html5 
get '/admin' do 
    admin_haml :'admin/index' 
end 
get '/admin/users' do 
    admin_haml :'admin/users' 
end 

這是測試Pos tgreSQL:

def dbdeb 
conn = PG.connect :user => "postgres" 
    output = conn.server_version 
    conn.close 
    return output 
end 

這是Gemfile中:

source 'http://rubygems.org' 
ruby '2.2.3' 
gem 'sinatra', '1.1.0' 
gem 'haml', '4.0.7' 
gem 'sass', '3.4.20' 
gem 'activerecord','4.2.5' 
gem 'sinatra-activerecord' 
gem 'pg' 
gem 'postgresql' 
gem 'pony','1.11' 

我做了什麼錯?

+0

那麼你調用'PG.connect:主機=> 「本地主機」'在'dbdeb'方法,但Posgres-服務器不在本地主機** ** :) – mhutter

回答

2

看起來好像您沒有爲您的Heroku應用程序定義的DATABASE_URL環境變量。

嘗試運行以下命令來查看您的Heroku應用程序設置了什麼樣的環境變量:

$ heroku config 

這應該列出哪些變量是可用的。如你所見,沒有DATABASE_URL變量集。

要設置此變量,您需要創建的Heroku Postgres數據庫:

$ heroku addons:create heroku-postgresql:hobby-basic 

這會在你的Heroku應用程序創建兩個環境變量:

  • DATABASE_URL
  • HEROKU_POSTGRES_COLOR

你可以找到更多關於這個在Heroku的Postgres的文檔:https://devcenter.heroku.com/articles/heroku-postgresql#create-a-new-database

+0

我按照你告訴我的方式,但我仍然得到相同的錯誤信息。 – d98867eb

+0

當您在命令行上運行'heroku config'時,您是否看到列出的'DATABASE_URL'環境變量? – rdegges

+0

是的,我確實看到DATABASE變量,仍然有相同的錯誤信息。 @rdegges – d98867eb