我设置了一些自定义配置变量。我可以在我的应用程序的设置 - >配置变量中看到它们。我也可以使用heroku config命令查看值。但是,当我启动我的应用程序时,环境变量不存在。我在Clojure中使用(System / getenv“MY_VARIABLE_NAME”)来获取它们。
是因为我尝试在启动时检索它们吗?他们以后才有空吗?或者是否有一些抽搐我可以通过做一些技巧摆脱?我之前在Heroku中使用过配置变量并且它们已经工作了,我不知道这里有什么问题......
答案 0 :(得分:1)
我尝试使用System / getenv从配置变量中检索客户端ID和使用Google进行oauth身份验证的密码。我使用名为Friend的库来执行此操作。问题是,该库中oauth参数的设置是通过宏完成的。宏扩展发生在编译时。 Heroku配置变量在编译期间不可用作环境变量(有充分理由)。然而,它们可以通过文件系统获得,这是我解决问题的方法。所以而不是:
(System/getenv "MY_APP_GOOGLE_CLIENT_ID")
我正在使用它:
(slurp (str (System/getenv "ENV_DIR") "/" "MY_APP_GOOGLE_CLIENT_ID"))
它有效!