我正在运行ejabberd 23.01-我想从sys.config文件中读取一些值。
当在VSCode中以relive的形式运行ejabberd时,运行ejabberdctl debug
和application: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
)?
谢谢.
1条答案
按热度按时间lh80um4z1#
好吧,我找到了一个变通办法--不是最好的,但它可以工作,而且它是可配置的,可能比
sys.config
路由更好。我创建了另一个模块,它从ejabout.yml文件中读取选项,并在模块启动时使用
application:set_env/3
为目标应用程序设置应用程序变量。如果应用程序的函数(依赖于这些值)在设置env之前被触发,这显然会失败,但它适用于我的用例。