我有一个图片库应用程序,我是从“Web Development with Clojure”一书中创建的,我正在将它部署到Heroku。我试图让它既是一个独立的uberjar,也是一个蹦床。我试着在开始时使用environ,但是在“db-spec”中不断收到数据库值错误,所以我停止使用它来使其在本地运行良好。我试图设置自己的环境变量,并使用main.clj文件。我编辑了我的个人资料设置信息,并且可以部署它,但无法在heroku上正常运行。有时我会看到一个空白屏幕,可以导航到我的几个页面,然后有时我会在GET的h10应用程序崩溃错误中寻找一个很难排除故障的favicon。用clojure项目部署到heroku,生产环境问题
是否有经验的人能告诉我具体需要写些什么以及在Heroku的生产环境中使用哪些文件?奖励积分,如果你还可以使用Heroku中的Postgres为我揭开环境变量和数据库连接设置的神秘面纱。
我已经搜罗了heroku,environ和leiningen文档。我也在堆栈中寻找同样的问题,当然也在我书中的所有例子中找到了三重奏,这些例子由luminus文档反映出来,导致同一个人写了它们。下面是我的应用程序的链接。以下是我在github上发布的一个项目的链接。
https://github.com/gamma235/picture-gallery
这是我如何定义我的数据库:
(def db
{:subprotocol "postgresql"
:subname "//localhost/gallery"
:user "admin"
:password "admin"})
这是我main.clj文件:
(ns picture-gallery.main
(:use picture-gallery.handler
[org.httpkit.server :only [run-server]]
[ring.middleware file-info file])
(:gen-class))
(defn -main [& [port]]
(let [port (if port (Integer/parseInt port) 3000)]
(run-server app {:port port})
(println (str "You can view the site at http://localhost:" port)))))
我使用[org.clojure/java.jdbc "0.2.3"]
我的数据库需求。这是旧版本,但我正在跟着这本书。
这里是我的project.clj文件的显著部分:
...
:main picture-gallery.main
:min-lein-version "2.0.0"
:plugins [[lein-ring "0.8.7"]]
:ring {:handler picture-gallery.handler/app
:init picture-gallery.handler/init
:destroy picture-gallery.handler/destroy}
:profiles
{:uberjar {:main picture-gallery.main, :aot :all}}
)
我跟着Heroku的呼喊应用教程here与有点小题大做部署它。但是,我无法弄清楚如何改变基于这个项目的我的图库应用程序中的代码。 Procfile中的$JVM_OPTS
等东西对我来说很神秘。欢迎任何解释或推荐。请浏览heroku应用的source-code,并在失败的地方成功。
你真的需要在这里展示一些细节。代码,确切的错误消息文本等。 –
我继续并添加了一些代码。我知道一个事实,即数据库定义不正确,而且我的主程序没有做任何处理环境的事情。这是我卡住的地方。我希望从我所展示的内容中,很容易指出需要改变的地方。 – kurofune
你在hostku上托管你的postgres数据库吗?在heroku上运行时使用哪个数据库? –