2012-05-21 34 views
9

私はHerokuにClojure/Noirアプリケーションを配備して遊んでいます。私のアプリは主に動作しています。しかし、私が必要とする最後の部分は、Herokuにデプロイされたときに私のアプリのホスト名を理解することです。理想的には、これをハードコーディングするのではなく、動的に実行したいと考えています。Herokuで現在のホスト名を取得する方法

たとえば、私のアプリのURLが「http://freez-windy-1800.herokuapp.com」の場合、私は自分のクローゼットコード内でこれを動的に取得したいと考えています。

私はこれを理解する要求を見ることができますが、理想的には式を一度評価して変数に保存できるような設定をしたいと思っています(Python/Djangoの世界から来て、私はClojureのsettings.py相当を考えています)。

参考までに、配備しているコードはhttps://github.com/rmanocha/cl-shortにあります。

答えて

5

あなたは

heroku config:add BASE_IRI=http://freez-windy-1800.herokuapp.com 

でHerokuの中に環境変数を設定し、Clojureの中でそれを読み戻すことができ

(defn- base-iri [] 
    (or (System/getenv "BASE_IRI") "http://localhost/")) 

Herokuのは、すでにPORTはあなたが

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

作品を使用することができます設定します私は別の環境にいます。

+0

私はあなたが既にPORTの部分をしているのを見ました。だから、それもあなたのために働くはずです。 –

+0

素晴らしい、ありがとう。それは素晴らしい、ありがとう。 –

2

通常、これはJava標準ライブラリのInetAddressで行います。

(.getCanonicalHostName (java.net.InetAddress/getLocalHost)) 

ただし、これはDNSルックアップを行いません。

+0

これはうまくいかないようです。 Heroku(heroku run lein replを使って)で乱数を得る。 localhostでは、私は自分のローカルIPを取得します。 –

関連する問題