【发布时间】:2017-09-21 06:51:48
【问题描述】:
我想通过Dokku 将我的应用程序部署到 VPS。
将dokku-postgresdocumentation 和相关的、稀缺的互联网文档(GitHub 上的one)放在一起,似乎有必要配置database.yml 以使用url 环境变量url: <%= ENV['DATABASE_URL'] %>
由于我找不到任何其他信息来源,我想知道应该如何配置 database.yml,以及 Rails 将如何连接到使用 Dokku 创建的 postgres 服务。
例如,理所当然地认为将url 链接到DATABASE_URL 变量是必要的,这是否足以在我的Rails 应用程序和postgres 服务之间建立连接,或者仍然需要使用用户名和密码?在后一种情况下,我应该使用什么用户名和密码?
下面是我的database.yml目前的样子。
default: &default
adapter: postgresql
encoding: unicode
pool: 5
username: asarluhi
development:
<<: *default
database: fireworks_app_development
test:
<<: *default
database: fireworks_app_test
production:
<<: *default
database: fireworks_app_production
pool: 25
username: fireworks_app
password: <%= ENV['FIREWORKS_APP_DATABASE_PASSWORD'] %>
该文件是在我创建应用程序时按原样创建的(除了用于生产的更高池大小)。您如何建议编辑 production 部分?
dokku-postgres 文档指出,默认情况下将在链接的应用程序上设置以下(仅此而已):
DATABASE_URL=postgres://postgres:SOME_PASSWORD@dokku-postgres-lolipop:5432/lolipop
代替棒棒糖 postgres 服务示例,我将使用 fireworks_app_production 来匹配 database.yml 中的数据库名称
将url 指向DATABASE_URL 变量后,是否还需要用户名 和密码?我是否应该添加或删除其他任何内容?
【问题讨论】:
-
您在
database.yml中输入的设置与来自 ENV["DATABASE_URL"] 的选项合并。来自 ENV 的设置优先。所以是的,您的pool选项将被使用。 guides.rubyonrails.org/configuring.html#configuring-a-database -
如果我决定在
database.yml中添加url: <%= ENV['DATABASE_URL'] %>,我的pool选项会被合并吗?正如您链接的文档所述,这将是最佳实践。 -
在
database.yml中显式添加url: <%= ENV['DATABASE_URL'] %>不是必需的,也不是最佳实践,因为数据库连接器默认使用ENV['DATABASE_URL']。它只是一个示例,展示了您应该在生产中使用 ENV var 而不是检查数据库凭据的概念/最佳实践。
标签: ruby-on-rails postgresql vps dokku