THINKING MEGANE

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お待ちしております。

このエントリーをはてなブックマークに追加