2010-11-06 3 views
2

Я создал mochiweb экземплярКак использовать приложение: get_env() в Erlang/OTP?

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, и я понимаю, что я, вероятно, делаю что-то глупое, но я бы очень признателен за любую помощь.

Cheers!

ответ

0

Вместо этого использовать get_key(myserver, vsn). Обратите внимание, что сначала необходимо загрузить приложение.

+0

ahhh, я забыл упомянуть, но я тоже это сделал ... и все еще не определен. Я использовал приложение: load (myserver), и я возвращаю сообщение об ошибке, которое оно уже загружено. Я использую приложение: get_key (myserver, vsn) и все равно получаю undefined .... – roder

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.

+0

+1 для показа документации. Это помогает понять, почему ?! – pedromanoel

1

Я понял это ... Ответ довольно глупый, и я чувствую себя глупой публикацией, но я надеюсь, что кто-то другой может воспользоваться мной.

Я действительно делал все правильно (как и все остальные ответы), но я использовал автомод mochiweb reloader и фактически не останавливал сервер. Как только я это сделал, все было в порядке.

DOH! Сожалею!

Смежные вопросы