2015-06-15 3 views
0

У меня есть этот код для получения данных из сумо логики и других сервисов.Clojure выдает исключение, когда я не ожидаю его

core.clj имеет это, что разбирает аргументы и routes его к правой функции в route.clj

(def cli-options 
    [ 
    ["-a" "--app APPNAME" "set app. app can be: 
             sumologic or jira"] 
    ["-?" "--help"] 
    ]) 

(defn -main 
    [& args] 
    (let [{:keys [options summary errors arguments]} (parse-opts args cli-options)] 
    (cond 
     (:app options) (route/to (:app options) options arguments) 
     :else (print_usage summary)))) 

route.clj имеет это:

(defn to 
    [app options arguments] 
    (case app 
    "jira" (jira/respond options arguments) 
    "sumologic" (sumo/respond))) 

И тогда sumo.clj имеет этот , есть, конечно, другие функции, но показаны только соответствующие части.

(defn get-env-var 
    [var] 
    (let [result (System/getenv var)] 
    (if (nil? result) 
     (throw (Exception. (str "Environment variable: " var " not set. Aborting"))) 
     result))) 

(def access_key 
    (let [user (get-env-var "SUMO_ID") 
     pass (get-env-var "SUMO_KEY")] 
    [user pass])) 

(defn respond 
    [] 
    (let [{:keys [status body error] :as response} (http/get endpoint rest-options)] 
    (if error 
     (println error) 
     (print-response body)))) 

Когда я запускаю программу с помощью Leiningen в lein run -- -? или даже просто lein run, я получаю эту ошибку, хотя я явно не называется функцией sumologic. Что я делаю неправильно, и что я могу сделать по-другому?

Caused by: java.lang.Exception: Environment variable: SUMO_KEY not set. Aborting 
    at clarion.sumo$get_env_var.invoke(sumo.clj:14) 
    at clarion.sumo$fn__3765.invoke(sumo.clj:19) 
    at clojure.lang.AFn.applyToHelper(AFn.java:152) 
    at clojure.lang.AFn.applyTo(AFn.java:144) 
    at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3553) 

ответ

3

Вы def «d access_key поэтому она оценивается при загрузке приложения. Возможно, вы захотите сделать его функцией.

+0

спасибо. что исправлено исключение –

Смежные вопросы