これは何?
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
以上