はじめに
最近とうらぶ練度チェッカーというwebアプリを開発し、その際にサーバサイドをgoで書いてHerokuにデプロイしたのですが、postgresに接続する時のgormの設定についての情報がなかなか見つからなくて苦労したのでここに書き残しておこうと思います。
設定について
公式のHeroku スターターガイド (Go)はすごく丁寧に書いてあります。DB接続についての説明はここら辺にあります。しかし今回はgorm使いたいのでここに記載している方法とは別の方法で接続する必要があります。そこでgormの公式ドキュメントを観に行ってみましょう。これです。 heroku addons:create heroku-postgresql:hobby-dev
コマンドを打つとデータベースが作成されるので、既存のDB接続というところを参考に設定をします。公式に書いてあるのをそのまま書くと次のようになります。
sqlDB, err := sql.Open("postgres", "mydb_dsn")
gormDB, err := gorm.Open(postgres.New(postgres.Config{
Conn: sqlDB,
}), &gorm.Config{})
はい。
sql.Openの第二引数のmydb_dsn
をまだ設定していないので次はそこです。
HerokuでDBのセットアップをする時、ここにあるように、自動的に DATABASE_URL
という環境変数が設定されます。これをGetenvした後parseURLして、SSLの設定も追加してさっきのmydb_dsn
の部分に入れましょう。
書いてみます。
mydb_dsn := os.Getenv("DATABASE_URL")
connection,err := pq.ParseURL(url)
connection += " sslmode=require"
sqlDB,err := sql.Open("postgres", connection)
gormDB, err := gorm.Open(postgres.New(postgres.Config{
Conn: sqlDB,
}), &gorm.Config{})
こんな感じでherokuでgormを使ったDBの接続の設定は完了です!!
※gorm.Configの中身やエラーハンドリングは本筋に関係ないので省略しています。
終わりに
最後までお読みいただきありがとうございました!
何か間違いがあったらコメントでご指摘いただければと思います。
この記事が誰かの役に立てたら幸いです!