Herokuでデータベースの接続情報を調べる
Herokuでデータベースの接続情報は、アプリ作成時にHeroku上の環境変数ENV
に自動で追加されるが、これを消しちゃうと復元不可能になるっぽい。なので、アプリ作成時に情報を取得してバックアップしておくのは良いことかもしれない。
経緯
Herokuアプリを作って色々試している頃に、heroku config:clear
1をしてしまって、DATABASE_URL
やSHARED_DATABASE_URL
を消してしまった。最初のうちはアプリでデータベースを使っていなかったので何も問題なかったんだけど、いざデータベースを使おうと、ENV['DATABASE_URL']
なコードを含むアプリをpushしたら「接続情報がないから使えないっスよ」とHerokuさんに言われる始末。さぁどうしたもんか、とHerokuのDB接続情報を取得する方法をネットで探すも見つからない。
困ったなぁとTwitterでつぶやいたら、いくつかレスポンスをいただけた。結果は冒頭で書いたとおり、一度消してしまうと復元は難しいということだ。
まとめ
SHARED_DATABASE_URL
が残っていれば、デフォルト状態ではDATABASE_URL
と同じ情報がそこには書き込まれている- Herokuのサポートに聞けば答えてくれるかもしれない。ただし、もちろん英語
- 支障がなければ、アプリを作り直してリネームするのが手っ取り早い(実際この方法を選んだ)
- コンソールからYAMLのクラスメソッドを使えば値を参照できる。ただし、
config:clear
を発動した時点で消えてしまうので今回の場合は参照できない - Herokuは
config/database.yml
を自動生成する
というわけで、今回自分は「アプリを作り直してリネームする」という方法を選んだ。GitHubにもアップロードしていたので、別フォルダにclone
して、heroku create
で適当な名前をつけて、元アプリの名前を一旦別の名前にして、clone
の方を元の名前にする。
あとは、pushして、heroku config:add
で必要な環境変数を追加して、heroku config:add TZ=Asia/Tokyo
でタイムゾーンを日本時間にして、Herokuの管理画面からアドオンを追加した。結構簡単に複製出来ちゃう。
Herokuで稼働中のアプリのDB名を調べる方法 - 今日もスミマセン。
- deprecateになっているので将来的には使えなくなるはず↩