Clojure Ragtime随环境变量迁移引发错误(Heroku部署)

Clojure Ragtime随环境变量迁移引发错误(Heroku部署),clojure,leiningen,compojure,heroku-postgres,Clojure,Leiningen,Compojure,Heroku Postgres,我正试图在heroku dyno上运行lein ragtime migrate。通常,我会在我的project.clj中设置数据库路径,如下所示: (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"]

我正试图在heroku dyno上运行
lein ragtime migrate
。通常,我会在我的
project.clj
中设置数据库路径,如下所示:

(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")}}})
当我运行该命令时,我在本地和在Heroku上都会遇到以下错误

java.lang.IllegalArgumentException:调度值:postgres的多方法“连接”中没有方法


任何指向正确方向的指针都将非常受欢迎。

Ragtime 0.3.9使用连接url中的方案作为连接方法的分派值。代码是和。但是heroku的数据库_ENV没有“jdbc”,而是“postgres”方案(这很有意义,它必须是通用的)

解决方法是添加“jdbc://”前缀:


您还可以升级到
[ragtime“0.4.0”]
,它不使用方案来了解如何创建连接。查看wiki以了解有关

的信息,我最终只是使用了
[ragtime“0.4.0”]
并从
配置文件启动。我害怕升级和破坏依赖关系,但通过一些修复,一切都很顺利。
:ragtime {:migrations ragtime.sql.files/migrations
          :database ~(str "jdbc://" (System/getenv "DATABASE_URL"))}