Sinatra Heroku PostgreSQL连接不好

时间:2015-12-21 20:51:28

标签: ruby postgresql heroku sinatra

当我尝试从Sinatra应用程序连接到PostgreSQL数据库时,我得到“连接错误”。我正在使用Heroku来部署应用程序,而我的工作站目前是Windows。我试过,仍然是同样的错误信息:

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?

来自config / 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

这是测试PostgreSQL的功能:

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'

我做错了什么?

1 个答案:

答案 0 :(得分: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