herokuのClearDBの接続情報用の環境変数からclojure.jdbc用の接続情報を作る

ClearDBの接続情報は環境変数のCLEARDB_DATABASE_URLに入っているので 正規表現で各項目を抽出しmapを作る。

(def database-infos
  (re-find #"([a-z]*)://([0-9a-zA-Z]*):([0-9a-zA-Z]*)@(.*)/([0-9a-zA-z_]*).*" (env :cleardb-database-url)))

(def mysql-db {:subprotcol (nth database-infos 1)
               :subname (clojure.string/join ["//" (nth database-infos 4) ":3306"])
               :user (nth database-infos 2)
               :password (nth database-infos 3)})

うーん、いまひとつな感がある。 もっといいやり方あると思うんだけどなぁ。

2016-04-18 追記

↑みたいにパースしなくても文字列を渡せばOKですよと
id:ayato0211 あやぴーさんが教えてくれました。

(def mysql-db (env :cleardb-database-url))

これでスッキリ。

あやぴーさんありがとうございますm(_ _)m

clojure.java.jdbc - JDBC-based SQL Interface 0.6.1 API documentation

もうちょっとドキュメントちゃんと読まな・・・。