これは何?
Herokuで運用しているアプリを、ふとAmazon Elastic Beanstalkに移行したくなった
けれど、軽く試すためだけのために、DBを移行するの大変
そんな時にお手軽に試す為の方法の記録
Heroku から DB の情報を取得する
heroku では、database.yml に接続するDBの情報を書かなくても良い感じに繋ぐけど、Amazon Elastic Beanstalk から heroku のDBに接続するためには、接続情報が必要
heroku config で調べる場合
$ heroku config
=== ***** Config Vars
DATABASE_URL: postgres://#{username}:#{password}@#{hostname}:5432/#{db_name}
rails config で調べる場合
$ heroku run rails console
irb(main):001:0> ActiveRecord::Base.connection_config
=> {:adapter=>"postgresql", :pool=>5, :timeout=>5000, :database=>"*****", :username=>"*****", :password=>"*****", :port=>5432, :host=>"*****"}
それぞれ、出てきた情報をメモする
database.yml に設定を追記する
直接書くのはよろしくないので、以下のようにして、環境変数から値を取るようにする
production:
<<: *default
database: <%= ENV['DB_NAME'] %>
username: <%= ENV['USERNAME'] %>
password: <%= ENV['PASSWORD'] %>
host: <%= ENV['HOSTNAME'] %>
port: 5432
Elastic Beanstalk に環境変数を設定する
eb setenv DB_NAME=******
eb setenv USERNAME=******
eb setenv PASSWORD=******
eb setenv HOSTNAME=******.amazonaws.com
以上