如何在Erlang / OTP中使用application:get_env()?

时间:2010-11-06 07:33:36

标签: erlang otp mochiweb

我创建了一个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的新手,我意识到我可能做了些蠢事,但我真的很感激任何人的帮助。

干杯!

3 个答案:

答案 0 :(得分:3)

来自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 :(得分:1)

我明白了......答案很愚蠢,我觉得很傻,但我希望别人可以从中受益。

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

DOH!遗憾!

答案 2 :(得分:0)

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