首先,我是一个完整的Rails / PostgreSQL菜鸟。
我正在尝试将rails应用程序部署到Heroku。我已经启动并运行了,但每次部署时,Heroku都会忽略我的database.yml信息并生成一个新的数据库。这是我的database.yml
# SQLite version 3.x
# gem install sqlite3
#
# Ensure the SQLite 3 gem is defined in your Gemfile
# gem 'sqlite3'
#
default: &default
adapter: sqlite3
pool: 5
timeout: 5000
development:
# <<: *default
# database: db/development.sqlite3
adapter: postgresql
pool: 5
host: wwydh.cqqq2sesxkkq.us-east-1.rds.amazonaws.com
timeout: 5000
username: wwydh_a_team
password: really cool password
database: wwydh
host: wwydh.cqqq2sesxkkq.us-east-1.rds.amazonaws.com
port: 5432
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
<<: *default
database: db/test.sqlite3
我做错了什么?
答案 0 :(得分:2)
heroku config:add DATABASE_URL=postgres://{user}:{password}@{hostname}:{port}/{database-name}
然后重新部署您的应用。它将读取您的DATABASE_URL并从中生成database.yml。
修改强>
根据这个SO question首先需要分离数据库,然后更新变量DATABASE_URL。
heroku addons:attach heroku-postgresql -a <app_name> --as HEROKU_DATABASE
heroku addons:detach DATABASE -a <app_name>
heroku config:add DATABASE_URL=.....
答案 1 :(得分:0)
终于解决了!这就是我所做的,也许它会帮助某人。
Heroku将您的应用默认为&#39; production&#39;状态,这意味着它将使用在生产&#39;下的database.yml文件中定义的设置。由于我没有任何这些设置,因此创建了一个要使用的数据库。我删除了我的Heroku PostgreSQL数据库(为我创建的数据库),并手动切换我的RAILS_ENV变量(位于Heroku中的应用程序设置下)进行开发&#39;瞧!我的应用程序连接到我的外部AWS数据库没问题。
旁注,请确保在AWS中定义新的安全组,以允许来自任何入站源IE 0.0.0.0/0的传入连接。否则,数据库将拒绝Heroku访问。我访问了AWS中的VPC仪表板,单击了安全组,并将我的默认组编辑为此,然后确保我的数据库实例正在使用该安全组。