我在配置文件中有一些配置数据,当应用程序启动时我从磁盘中读取数据。我需要将该配置数据提供给应用程序中的其他功能/模块。我开始研究ets/mnesia以便在启动时存储数据,以便在所有进程之间共享数据,但接下来我内心的声音告诫我必须有一种更实用的erlang-y方式来执行此操作。到目前为止,我提出的唯一替代方法是建立一个模块,该模块具有一个在启动时读取数据并响应诸如{Key,From}之类的消息并由From发出响应的actor循环。 {OK,值}。于是,我放弃了,决定问... 谢谢, --tim在模块之间共享[config]数据,功能
4
A
回答
4
如果你需要的只是一些配置参数,你可能要包括他们作为环境变量(二郎计算)之一你的Erlang应用程序。做到这一点的方法是将其包含到。应用程序(或.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).
如果你需要的是更复杂的东西,你可能希望创建一个gen_server进程,回答所有的配置请求(getter和setter方法)。
0
更不用说任何简单的自行编写的解决方案都需要在启动主管理员之前读取配置文件,因为您可能需要这些变量。只是一个想法,但我在自己的代码中遇到了同样的问题。
相关问题
- 1. 在appengine模块之间共享数据
- 2. 在apache模块之间共享数据
- 3. 在es6模块之间共享数据
- 4. 如何在两个模块之间共享数据库模型?
- 5. 在模块之间共享内存
- 6. Web2py - 在模块之间共享列表
- 7. 在模块之间共享互斥体
- 8. joomla在模块之间共享变量
- 9. 在appengine模块之间共享python包
- 10. 块之间共享lua数据?
- 11. 在SpecFlow中,如何在步骤/功能之间共享数据?
- 12. ZF2 - 模块之间的共享模型
- 13. 模块之间共享ZF2模型
- 14. 在NodeJS中的模块之间共享数据
- 15. 如何在AngularJS的两个模块之间共享数据?
- 16. Angularjs在两个模块之间共享数据
- 17. 在两个模块之间共享数据MeanJs不工作
- 18. 如何在多个App Engine模块之间共享元数据?
- 19. Gradle和Maven之间的共享模块
- 20. Intellij共享项目之间的模块
- 21. 在数据库之间共享数据
- 22. 功能之间的共享连接
- 23. jQuery - 功能之间共享变量
- 24. ViewControllers之间共享数据
- 25. 共享数据JVM之间
- 26. 改变根模块之间共享数据
- 27. Angular 5:组件之间共享数据的服务(跨模块)?
- 28. Python行为功能之间共享数据
- 29. 如何在Django模型实例之间共享公共数据?
- 30. 在PRISM模块之间共享公共资源(wpf)
辉煌,感谢罗伯托,我现在有一个简单的gen_server现在回答我的配置调用感谢一个简单的教程[1],它足够简化,甚至我可以明白... [1] - http:/ /20bits.com/articles/erlang-a-generic-server-tutorial/ – Tim 2010-03-24 16:45:32