2010-11-06 159 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!抱歉!