The "Environment variables > Complete database variables" doc is misleading
Here https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/administration/environment_variables.md#complete-database-variables, it says:
As explained in the Heroku documentation the
DATABASE_URL
doesn't let you set:
- adapter
- database
- username
- password
- host
- port
But in fact the Heroku documentation is more clear on this point, and it actually says almost the opposite of our documentation:
While the default connection information will be pulled from
DATABASE_URL
, any additional configuration options in yourconfig/database.yml
will be merged in. The idea is thatDATABASE_URL
only holds connection information, but not behavior information. You can still configure Active Record behavior such as pool setting:production: encoding: utf8 pool: 15
You cannot use the
config/database.yml
to set any values found in ENV['DATABASE_URL']. This is a list of attributes you cannot change:
- adapter
- database
- username
- password
- host
- port
I think we should encourage people to use DATABASE_URL
since it allows to set all the attributes above at once and let them know that any database behavior information should be added to config/database.yml
. In any case, the GITLAB_DATABASE_ADAPTER
, GITLAB_DATABASE_DATABASE
, GITLAB_DATABASE_USERNAME
, GITLAB_DATABASE_PASSWORD
, GITLAB_DATABASE_HOST
and GITLAB_DATABASE_PORT
variables would still be used if no DATABASE_URL
is present and no url
key is present in config/database.yml
(so we have the best of both worlds).