Erlang магазин первоначальной конфигурации приложения - PullRequest
15 голосов
/ 19 июля 2011

Я работаю над приложением для мониторинга, и при запуске мне нужно передать начальную настройку, которая состоит из пары списков IP-адресов. Какой способ OTP передать эти данные в приложение - через файл .app или есть какой-либо другой общепринятый способ?

Ответы [ 4 ]

8 голосов
/ 20 июля 2011

Использовать Erlang файл конфигурации :

Файл конфигурации содержит значения параметров конфигурации для приложения в системе. Аргумент командной строки erl -config Имя указывает системе использовать данные в файле конфигурации системы Name.config.

Значения параметров конфигурации в файле конфигурации будут переопределены значения в файлах ресурсов приложения (см. app (4)). Ценности в файле конфигурации могут быть переопределены флагами командной строки (см. Эрл (1)).

Значение параметра конфигурации извлекается путем вызова Применение: get_env / 1,2

.

Если вам нужно переопределить их во время выполнения, вы можете использовать application:set_env/3, но с осторожностью.

1 голос
/ 19 июля 2011

вы можете обрабатывать конфигурацию несколькими способами.здесь ссылка на другой стек-поток тема

ИМХО я предлагаю файл .app, или вы можете использовать файл конфигурации ( здесь другая ссылка на тему стек-потока)

0 голосов
/ 20 июля 2011

Используйте файл, в котором у вас есть данные в качестве терминов erlang.Однако вам необходимо защитить файл.Чтение из файла при запуске использования: file:consult/1.Если пользователь или системный администратор изменит файл, используйте следующие функции для защиты или отказа в доступе к файлу:

-include_lib("kernel/include/file.hrl").

protect_file(File)-> 
    {_,File_info} = file:read_file_info(File),
    file:write_file_info(File,File_info#file_info{access = read,mode = 33060}).

unprotect_file(File)->
    {_,File_info} = file:read_file_info(File),
    file:write_file_info(File,File_info#file_info{access = read_write,mode = 33206}).

Используйте функцию protect_file/1, чтобы сделать файл доступным только для чтения.Если вам нужно сделать файл доступным для записи, измените его, используя unprotect_file/1.Файл с терминами erlang проще, потому что вам не нужен синтаксический анализ. Вы также можете записать свои конфигурации в виде JSON объектов или XML данных в файл.В итоге, использование файла для всех ваших конфигураций будет лучше управляться вашим приложением и теми, кто с ним взаимодействует.

Примером является файл ejabberd.cfg, файл конфигурации для сервера ejabberd.Это проще всего с файлом с терминами erlang, потому что вы можете оставить комментарий для системного администратора, чтобы увидеть другие доступные опции для определенной конфигурации.

0 голосов
/ 20 июля 2011

Я бы создал процесс gen_server имени, у которого есть список IP-адресов в качестве его состояния.При инициализации сервера предопределенный список будет считан из файла с использованием file: consult и использован в качестве начального состояния сервера.Чтобы получить список IP-адресов из этого имени gen_server, необходимо реализовать handle_call (get_ip, _From, State).

Таким образом, вы предотвращаете общее глобальное состояние, которое дает вам большую карму Эрланга, и имеетеЛучшая отправная точка для добавленной функциональности, например, изменения IP-адреса во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...