У меня есть некоторые данные конфигурации в файле конфигурации, который я читаю с диска при запуске приложения. Мне нужно сделать эти данные конфигурации доступными для других функций/модулей в приложении. Я начал путь к просмотру в ets/mnesia, чтобы хранить данные при запуске, чтобы сделать его общим для всех процессов, но затем мой внутренний голос предостерег меня, что для этого должен быть более функциональный, erlang-y способ сделать это. Единственный альтернативный подход, к которому я пришел, - это создать модуль, в котором есть актерский цикл, который считывает данные при запуске и отвечает на такие сообщения, как {Key, From} и отвечает From! {Ок, Value}. Тогда я сдался и решил спросить ... Спасибо, --timСовместное использование данных [config] через модули, функции
ответ
Если то, что вам нужно, это только некоторые параметры конфигурации, вы можете включить их как переменные среды (в терминах Erlang) в одном из ваши приложения Erlang. Способ сделать это, чтобы включить их в .app (или .app.src) файл вашего приложения, в env
кортеже:
Что-то вроде:
{application, ch_app,
[{description, "Channel allocator"},
{vsn, "1"},
{modules, [ch_app, ch_sup, ch3]},
{registered, [ch3]},
{applications, [kernel, stdlib, sasl]},
{mod, {ch_app,[]}},
{env, [{file, "/usr/local/log"}]}
]}.
ИСТОЧНИК: http://www.erlang.org/doc/design_principles/applications.html
Как вы можете видеть, file
- это переменная конфигурации. Вы можете получить доступ к переменной с помощью:
application:get_env(ch_app, file).
Если то, что вам нужно что-то более сложным, вы можете создать серверный процесс, который ответит на все запросы конфигурации (методы получения и установки).
Не говоря уже о том, что любое простое самостоятельное письменное решение включает чтение файла конфигурации перед запуском главного диспетчера, поскольку вам могут понадобиться эти переменные. Просто мысль, но я столкнулся с той же проблемой в своем собственном коде.
- 1. Python ConfigParser - использование через модули
- 2. Использование Tkinter через модули
- 3. Совместное использование файлов через Chaton
- 4. Совместное использование объекта через несколько экземпляров функции Azure
- 5. Совместное использование структуры данных с разными заголовками
- 6. Совместное использование базы данных Redis?
- 7. Совместное использование данных OpenCL ядра
- 8. AngularJS: Совместное использование функции между контроллерами
- 9. Совместное использование COM-порта через TCP
- 10. Совместное использование изображения через nfc и сохранение в базе данных
- 11. Совместное использование базы данных доступа через SQL Express 2014
- 12. модули Совместное использование и/или файлов в Windows 7
- 13. Совместное использование данных памяти в RStudio Server
- 14. Совместное использование нескольких переменных Через sys/shm.h
- 15. Как отключить совместное использование расширений через excludedActivityTypes?
- 16. Совместное использование субтотала через контроллеры в Angular
- 17. Совместное использование экземпляра Ignite через tomcat webapps
- 18. Совместное использование NSMenuItems через несколько NSMenus
- 19. Совместное использование токенов доступа Facebook через приложения
- 20. Android: Совместное использование изображений через Facebook API
- 21. Совместное использование базы данных по нескольким приложениям
- 22. Совместное использование данных конфигурации в GameCenter
- 23. Совместное использование объекта $ http между контроллерами через службу
- 24. Совместное использование токенов OAuth через два проекта веб-API
- 25. Совместное использование данных Android в здании
- 26. Использование InputStream/OutputStream для обработки потоков данных через модули
- 27. Entity Framework - Совместное использование транзакций через ограниченные контексты
- 28. MVC - совместное использование данных запроса на основе не удается, совместное использование данных на основе сеанса успешно
- 29. Совместное использование токенов JWT
- 30. Повторное использование этого вида через модули
Блестящий, спасибо Роберто, у меня есть простой gen_server, который теперь отвечает на мои вызовы конфигурации благодаря нелепому простому учебнику [1], который упростил его достаточно, чтобы даже я мог понять ... [1] - http: /20bits.com/articles/erlang-a-generic-server-tutorial/ – Tim