2010-11-06 160 views
2

我创建了一个受Mochiweb实例如何在Erlang/OTP中使用application:get_env()?

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的新手,我意识到我可能在做一些愚蠢的事情,但我会非常感谢任何人的帮助。

干杯!

回答

0

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

+0

ahhh,我忘了提及,但我也这么做了......但仍未定义。我使用的应用程序:加载(myserver),我得到一个错误,它已经加载。我使用应用程序:get_key(myserver,vsn),仍然未定义.... – roder 2010-11-06 08:00:47

3

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

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

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

如果指定的应用程序不 加载,或说明书键确实 不存在,或者如果执行 过程中的呼叫不属于任何应用程序 ,函数返回 未定义。

指定的关键是?应用程序是否已加载?

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

+0

显示文档。它有助于理解为什么?! – pedromanoel 2012-03-06 17:38:46

1

我想通了......答案很愚蠢,我感到很傻,但我希望别人能从我身上受益。

我实际上正在做的一切正常(所有其他答案),但我使用mochiweb的自动reloader而不是实际上停止服务器。一旦我做到了,一切都很好。

DOH!抱歉!