如何在Heroku中获取当前主机名

Ris*_*cha 9 clojure heroku noir

我正在玩Heroku上部署Clojure/Noir应用程序,我的应用程序大部分都在工作.但是,我需要的最后一件事是在Heroku上部署时找出我的应用程序的主机名.理想情况下,我想动态地执行此操作,而不是对其进行硬编码.

所以,例如,如果我的应用程序的URL是' http://freez-windy-1800.herokuapp.com ',我希望能够在我的clojure代码中动态地获取它.

我知道,我可以看看传入的请求摸不着头脑,但理想情况下,我想有某种形式的"设置",我曾经计算表达式,并保存在一个变量,然后我就可以使用的值(未来从Python/Django世界来看,我在思考settings.pyClojure 中的等价物.

作为参考,我正在部署的代码可以在https://github.com/rmanocha/cl-short上找到.

Joc*_*Rau 5

您可以在Heroku中设置环境变量

heroku config:add BASE_IRI=http://freez-windy-1800.herokuapp.com
Run Code Online (Sandbox Code Playgroud)

并在Clojure中阅读

(defn- base-iri []
  (or (System/getenv "BASE_IRI") "http://localhost/"))
Run Code Online (Sandbox Code Playgroud)

Heroku已经设置了您可以使用的PORT

(defn -main []
  (let [port (Integer. (or (System/getenv "PORT") 8080))]
    (run-jetty #'app {:port port})))
Run Code Online (Sandbox Code Playgroud)

适用于不同环境.