2015-07-01 7 views
0

Я пытаюсь запустить lein ragtime migrate на dyna героя. Как правило, я бы указать путь к базе данных в моей project.clj так:Ragtime Migrate with Environment Переменная метаданных Ошибка (развертывание Heroku)

(defproject my-project "0.1.0-SNAPSHOT" 
    :min-lein-version "2.0.0" 
    :dependencies [[org.clojure/clojure "1.6.0"] 
       [org.clojure/java.jdbc "0.3.7"] 
       [postgresql "9.3-1102.jdbc41"] 
       [ragtime "0.3.9"] 
       [ring "1.4.0-RC1"] 
       [ring/ring-defaults "0.1.2"]] 
    :plugins [[lein-ring "0.8.13"] 
      [ragtime/ragtime.lein "0.3.9"]] 
    ... 
    :ragtime {:migrations ragtime.sql.files/migrations 
      :database (System/getenv "DATABASE_URL")} 
    ... 

    :profiles 
    {:dev {:dependencies [[javax.servlet/servlet-api "2.5"] 
         [ring-mock "0.1.5"]] 
    :test {:ragtime {:database (System/getenv "DATABASE_URL")}}}) 

Когда я запускаю команду, я получаю следующее сообщение об ошибке, как локально, так и depolying над Heroku

java.lang.IllegalArgumentException: Нет метода в соединении с несколькими способами для отправки: postgres

Любые указатели в правильном направлении были бы очень признательны.

ответ

0

Ragtime 0.3.9 использует схему из URL-адреса соединения в качестве значения отправки для соединения multimethod. Код here и here. Но у DATABASE_ENV от heroku нет схемы «jdbc», а «postgres» (что имеет смысл, оно должно быть общим).

Обходной может быть, чтобы добавить «JDBC: //» префикс:

:ragtime {:migrations ragtime.sql.files/migrations 
      :database ~(str "jdbc://" (System/getenv "DATABASE_URL"))} 

Вы также можете перейти на [ragtime "0.4.0"], которая не использует схему, чтобы узнать, как создать соединение. См. Wiki для получения информации о upgrade path from 0.3.x

+0

Я закончил с использованием '[ragtime" 0.4.0 "]' и запустился из файла 'config'. Я боялся обновления и разрушения зависимостей, но с некоторыми исправлениями все получилось хорошо. –