erlang 在我的EJB版本中如何读取sys.config?

pdtvr36n  于 5个月前  发布在  Erlang
关注(0)|答案(1)|浏览(52)

我正在运行ejabberd 23.01-我想从sys.config文件中读取一些值。
当在VSCode中以relive的形式运行ejabberd时,运行ejabberdctl debugapplication:get_env(ejabberd, config).会得到一个包含ejabberd.yml路径的元组,我推断该路径来自relive.config文件,并且我也能够成功地从该文件中存储和读取我的值。
然而,我的问题是,对于发布版本-对sys.config进行相同的修改,然后通过运行make rel进行发布,会将sys.config文件推到releases/23.01文件夹中,并且在从bin/ejabberdctl start启动发布版本并运行bin/ejabberdctl debug + application:get_env(ejabberd, config).时,它会返回undefined值。
我错过了什么?我启动我的ejabberd版本错误了吗(在启动应用程序时没有记住sys.config)?
谢谢.

lh80um4z

lh80um4z1#

好吧,我找到了一个变通办法--不是最好的,但它可以工作,而且它是可配置的,可能比sys.config路由更好。
我创建了另一个模块,它从ejabout.yml文件中读取选项,并在模块启动时使用application:set_env/3为目标应用程序设置应用程序变量。
如果应用程序的函数(依赖于这些值)在设置env之前被触发,这显然会失败,但它适用于我的用例。

相关问题