我是Erlang的新手,我对.config文件有疑问: 我有一个配置文件:
{path, "/mnt/test/"}.
{name, "Joe"}.
路径和名称可以由用户更改。据我所知,有一种方法可以通过在
中使用file:consult/1
将这些变量保存在模块中
-define(VARIABLE, <parsing of the config file>).
在模块开始工作时,是否有任何更好的方法可以读取配置文件,而无需在-define中创建解析功能? (据我所知,根据Erlang开发人员的说法,这不是在-define中制作复杂函数的最佳方法)
谢谢。
答案 0 :(得分:4)
如果仅在启动应用程序时需要存储配置-您可以使用在'rebar.config'中定义的应用程序配置文件
{profiles, [
{local,
[{relx, [
{dev_mode, false},
{include_erts, true},
{include_src, false},
{vm_args, "config/local/vm.args"}]
{sys_config, "config/local/yourapplication.config"}]
}]
}
]}.
此处的更多信息:rebar3 configuration
下一步创建yourapplication.config
-将其存储在应用程序文件夹/app/config/local/yourapplication.config
此配置应具有类似于此示例的结构
[
{
yourapplicationname, [
{path, "/mnt/test/"},
{name, "Joe"}
]
}
].
所以当您的应用程序启动时 您可以使用
获取整个配置数据{ok, "/mnt/test/"} = application:get_env(yourapplicationname, path)
{ok, "Joe"} = application:get_env(yourapplicationname, name)
现在,您可以-定义此变量,例如:
-define(VARIABLE,
case application:get_env(yourapplicationname, path) of
{ok, Data} -> Data
_ -> undefined
end
).