Clojure Ragtime随环境变量迁移引发错误(Heroku部署)
我正试图在heroku dyno上运行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"]
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"))}