【问题标题】:How to use application:get_env() in Erlang/OTP?如何在 Erlang/OTP 中使用 application:get_env()?
【发布时间】:2011-05-05 23:15:37
【问题描述】:

我创建了一个 mochiweb 实例

src/
   |-- Makefile
   |-- room.erl
   |-- myserver.app
   |-- myserver.erl
   |-- myserver_app.erl
   |-- myserver_deps.erl
   |-- myserver_sup.erl
   |-- myserver_web.erl
   `-- uuid.erl

myserver_web.erl我可以访问应用程序配置

{ok, "0.0.1"} = application:get_key(vsn),

但是在room.erl 中,我无法访问应用程序配置(特别是env 列表)。

undefined = application:get_key(vsn),

主管没有启动房间,我也不想要它。

我是 OTP 的新手,我意识到我可能在做一些愚蠢的事情,但我非常感谢任何人的帮助。

干杯!

【问题讨论】:

    标签: erlang erlang-otp mochiweb


    【解决方案1】:

    我想通了...答案很愚蠢,我觉得发帖很愚蠢,但我希望其他人可以从我这里受益。

    我实际上做的一切都是正确的(就像所有其他答案一样),但我使用的是 mochiweb 的自动 reloader 并没有真正停止服务器。一旦我这样做了,一切都很好。

    DOH!对不起!

    【讨论】:

      【解决方案2】:

      来自the Erlang documentation about the application:get_key/1-2 function

      返回应用程序的值 规范键 应用程序键。 如果应用程序参数是 省略,默认为 调用进程的应用。

      my_server_web.erl 的应用是什么? room.erl有什么应用?

      如果指定的应用程序不是 加载,或规范键 不存在,或者如果进程正在执行 通话不属于任何 应用程序,函数返回 未定义。

      是否指定了密钥?是否已加载应用程序?

      关于“env”键,您可以使用the application:get_env/1 function

      【讨论】:

      • +1 用于显示文档。理解为什么会有很大帮助?!
      【解决方案3】:

      请改用get_key(myserver, vsn)。请注意,需要先加载应用程序。

      【讨论】:

      • 啊,我忘了提,但我也这样做了......但仍然未定义。我使用了 application:load(myserver) 并且我得到了一个它已经加载的错误。我使用 application:get_key(myserver, vsn) 仍然未定义....
      猜你喜欢
      • 2011-08-18
      • 2010-11-24
      • 2018-05-01
      • 1970-01-01
      • 2017-05-12
      • 2013-11-01
      • 1970-01-01
      • 2011-05-18
      • 1970-01-01
      相关资源
      最近更新 更多