Rails Postgres配置主机被误认为数据库名称

时间:2018-12-11 11:46:06

标签: ruby-on-rails postgresql

由于这个问题,我一直在拔头发:

当我在Mac上运行Rails应用程序时,似乎host被误认为database name,并且仅在开发环境中发生。

这是我的database.yml:

default: &default
  adapter: postgresql
  encoding: unicode
  pool: 5
  username: <%= ENV['DATABASE_USERNAME'] || 'admin' %>
  password: <%= ENV['DATABASE_PASSWORD'] || 'password'%>
  host: <%= ENV['DATABASE_URL'] || 'localhost'%>

development:
  <<: *default
  database: cid_dev

test:
  <<: *default
  database: cid_test

production:
  <<: *default
  database: cid_api

然后当我跑步时:

$ bundle exec rake db:create

它向我返回:

Database 'localhost' already exists

有人知道我的本地环境会发生什么吗? 仅供参考,我尝试过rbenv和rvm都存在相同的问题。

谢谢。

1 个答案:

答案 0 :(得分:0)

我自己找到了答案。

使用DATABASE_URL环境变量作为放置连接字符串的位置。因此,当我将数据库主机放入环境变量DATABASE_URL中时,它将用作默认主机

https://github.com/rails/rails/blob/fb764ba63e53b728873075a0d207b993409798a2/railties/lib/rails/application/configuration.rb#L88-L102

因此,要解决该问题,我需要将DATABASE_URL重命名为DATABASE_HOST,这仍然是正确的选择。谢谢