如何在heroku上使用带有rails的postgres

时间:2013-07-18 06:49:25

标签: ruby-on-rails heroku configuration

我在database.yml中有以下内容

production:
  adapter: postgresql
  database: dbname
  host: host.compute-1.amazonaws.com
  username: user
  password: pass_word
  DATABASE_URL: postgres://user:pass_word@host.compute-1.amazonaws.com:5432/dbname

然而在git push heroku master上,我收到以下错误。

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

我是否还需要对其他环境进行更改?

3 个答案:

答案 0 :(得分:3)

heroku在部署时自动生成database.yml

您需要.git忽略database.yml

您可以通过设置ENV['DATABASE_URL'] (use heroku config:add DATABASE_URL=....)

来选择其他数据库

有关详细信息,请查看heroku documentation

答案 1 :(得分:0)

不需要DATABASE_URL。或者你可以查看这个http://railsapps.github.io/rails-heroku-tutorial.html

答案 2 :(得分:0)

此错误

could not connect to server: Connection refused
Is the server running on host "127.0.0.1" and accepting
TCP/IP connections on port 5432?
在推送期间发出

,因为默认情况下Rails会自动编译预编译资产,其中一部分是Rails尝试连接到数据库。在构建期间,您的应用程序配置不存在,因此Rails尝试回退到使用localhost(不存在)的默认值。

有几种方法可以阻止这种情况发生。一个(建议的方式)是设置

config.assets.initialize_on_precompile = false

production.rb

第二种方法是启用user-env-compile实验室功能,使您的PG配置在构建时存在。

$ heroku labs:enable user-env-compile -a <YOUR_APP_NAME>