我在Heroku上部署了一个Rails应用程序,它工作正常,直到我们有相同的数据库用于开发和生产。出于某种原因,我们必须保持两个数据库相同,所以我更改了database.yml
如下:
production:
adapter: postgresql
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
timeout: 5000
host: same_as_in_development
port: 5432
username: same_as_in_development
database: same_as_in_development
password: same_as_in_development
请注意,我们未使用来自AWS的localhost,它的Postgres网址。
但Heroku仍在加载旧数据库配置以进行生产。手动部署应用程序但没有运气。创建了新的应用程序,在那里部署了代码,但仍然没有像在开发中那样从数据库中保存/加载数据。似乎它使用配置变量中定义的数据库DATABASE_URL
。
答案 0 :(得分:0)
Heroku使用DATABASE_URL
环境变量来配置数据库连接。
DATABASE_URL
变量的命名约定如下:
postgres://<username>:<password>@<host>/<dbname>
您可以从以下Heroku文档中了解有关设置数据库外部连接的更多信息。
https://devcenter.heroku.com/articles/heroku-postgresql#external-connections-ingress
如果您从头开始阅读documentation,它将详细了解Heroku如何连接数据库以及Heroku使用的约定。
Rails documentation也有一些关于使用DATABASE_URL