2016-05-01 30 views
2

我想在Eclipse中设置生产和开发配置文件,以便在Heroku上部署我的compojure/ring应用程序。但是,逆时针插件不会加载配置文件中的环境变量。我在环境选项卡中添加了变量并重新启动了REPL,但变量仍然不可用。这就是我添加它们的方式:environment variables逆时针设置环境变量

我自己也尝试添加变量profiles.clj但无济于事:

`:profiles 
    {:production 
     {:ring 
     {:open-browser? false, 
     :stacktraces? false, 
     :auto-reload? false} 
     :env {:port 3000 
      :db-url "//localhost/login" 
      :db-user "test" 
      :db-pass "test" 
      :galleries-path "test"}} 
     :dev 
     {:dependencies [[ring-mock "0.1.5"] 
         [ring/ring-devel "1.2.0"]] 
     :env {:port 3000 
       :db-url "//localhost/gallery" 
       :db-user "test" 
       :db-pass "testProd" 
       :galleries-path "galleries"}}}` 

回答

0

当您采用环保,无毒,它会自动强制转换"DB_URL"到更地道:db-url。看一下environ的强制代码,看起来好像没什么关系,但我会尝试大写,并强调你在Environment选项卡中设置的所有环境变量。

+0

作出修改建议后,我收到以下错误: 'db-spec {:password nil, :subprotocol "postgresql", :user nil, :subname nil} is missing a required parameter' 这里是我的DB-规格: '(def db {:subprotocol "postgresql" :subname (env :db-url) :user (env :db-user) :password (env :db-pass)})' 我只是不知道所需的参数是什么。 –

+0

可能是零值是缺失的? –

+0

你是对的。然而,问题不在于零值缺失,而在于它们没有得到适当的评估,这又回到了关于环境如何强制环境变量的观点。建议更改后,我的DB-规格如下所示: '(DEF DB {:子协议 “的PostgreSQL” :子名(ENV:DB_URL) :用户(ENV:DB_USER) :密码(ENV:DB_PASS)} )' 当运行'db'时,得到以下结果: '=>分贝 {:子协议 “的PostgreSQL”, :子名称零, :用户零, :密码零}' –