Go言語のDB接続情報をRailsのdatabase.ymlから借用するライブラリをつくった
最近、Rails資産のあるサーバーでGoツールを動かすことがあったので、DB接続情報を共通で使えるようにしたいと思い小さなライブラリをつくりました。
Railsのdatabase.ymlからGoのsql.Openに渡すDataSourceNameを出力します。
使い方
database.ymlのパスと環境(productionやdevelopment)をパラメタとして渡してあげるだけです。
name, dsn, _ := dsn.FromRailsConfig("myapp/config/database.yml", "production")
fmt.Printf("[%s] %s", name, dsn)
// => [mysql] username:password@tcp(localhost:3306)/dbname
DSN、書式覚えるの厳しいので分かりやすいフォーマットの設定ファイルから読み込めるようになるのもうれしい感じです。
機能
今のところ、MySQL, PostgreSql, Sqlite に対応しています。
実装と今後
単純にYAMLを解析しているだけなので、ERBが含まれる項目はうまく動作しません。
そのうち、環境変数からやフラグからもDSNを生成できるようにするつもりですが、まだ自分の用途では特に必要になってないのでつくってません。よければPRお待ちしております。