2014-07-30 3 views
-1

Я добавил ElephantSQL надстройку к моему облачному сервису (?) И назвал БД.Как использовать ElephantSQL (Postgresql) с приложением Clojure?

Я видел документацию по сервису MySQL и как ее интегрировать, но ничего для ElephantSQL.

Нужны ли настройки конфигурации среды или строка подключения или что?

В Heroku я использую переменную config DATABASE_URL в качестве строки подключения.

+0

Добавлен его * к чему *? См. Править выше - это правильно? Пожалуйста, будьте более конкретными. Мы не знаем, что вы делаете или где, вам нужно объяснить. –

+0

У меня есть рабочее приложение Clojure ring, которое работает локально с Postgresql, а также на Heroku, с бэкэнд Postgresql. Я бы хотел попробовать облако. У меня есть бесплатная учетная запись, и я могу либо попробовать развертывать git, либо напрямую загружать. Я предполагаю, что прямая загрузка - это баночный или военный файл, я не уверен. В любом случае, мне нужно знать, что мне нужно сделать в проекте, чтобы подключиться к дополнению ElephantSQL, которое я подготовил для этого приложения. – jmckitrick

ответ

0

Мы рекомендуем использовать BoneCP и clojure.java.jdbc:

(ns myapp.db 
    (:import com.jolbox.bonecp.BoneCPDataSource) 
    (:import java.net.URI) 
    (:require [clojure.java.jdbc :as jdbc] 
      [clojure.string :as string])) 

(def url (get (System/getenv) "ELEPHANTSQL_URL" "postgres://localhost/mydb")) 

(defn pool [url] 
    (let [uri (URI. url) 
     host (.getHost uri) 
     port (if (pos? (.getPort uri)) (.getPort uri) 5432) 
     path (.getPath uri) 
     user-info (or (.getUserInfo uri) ":") 
     [user password] (string/split user-info #":")] 
    {:datasource 
    (doto (BoneCPDataSource.) 
     (.setJdbcUrl (str "jdbc:postgresql://" host ":" port path)) 
     (.setPartitionCount 1) 
     (.setMinConnectionsPerPartition 3) 
     (.setMaxConnectionsPerPartition 10) 
     (.setUsername user) 
     (.setPassword password))})) 

(def pooled-db (delay (pool url))) 

(defn account [id] 
    (jdbc/query 
    @pooled-db 
    ["SELECT * FROM accounts WHERE id = ?" id])) 
Смежные вопросы