系统信息:
MongooseIM版本:3.0.0
安装自:pkg
Erlang / OTP版本:18
Ubuntu 16.04
我无法为自定义模块创建标准库。我想创建一个documentation for ejabberd中概述的简单的hello world程序。
但是,我无法将其用于MongooseIM。是否有关于如何执行此操作的说明?作为一个初学者,我只是在寻找创建自己的模块的基础,而我所看到的一切对于我目前想要实现的目标来说有点太复杂了。
这是我模块的代码:(摘自ejabberd)https://docs.ejabberd.im/developer/extending-ejabberd/modules/#mod-hello-world
这是我的日志错误:
我在配置文件中添加了以下所有其他正在运行的模块行:
{mod_hello_world, []}
我假设它与编译有关,没有为模块创建.beam文件以及一些MongooseIM特定的语法错误。我还不熟悉使用预构建的pkg而不是从源代码安装时用于编译模块的文档。
答案 0 :(得分:2)
免责声明:我是为Erlang Solutions工作的MongooseIM开发人员。
The link you posted提示了当前问题的答案:
如果从源代码编译ejabberd,则可以将该源代码文件与所有其他ejabberd源代码文件一起复制,因此它将与它们一起编译并安装。如果安装了一些已编译的ejabberd软件包,则可以创建自己的模块目录,请参阅管理自己的模块。
MongooseIM(又称MIM)不支持后者的模块管理方法,即从软件包中安装MIM并使其仅编译并运行模块时,就不可能将源代码放到某些预定义的位置。如果要编写自定义模块,则必须build MongooseIM from source。
确切地说,我们不必从源代码构建整个服务器并自行打包。但是,我们必须克隆存储库,将新的模块源放置在此处(由于建立时间要求,例如头文件),然后在此处进行构建。一旦获得了新模块的func alltextField() {
for sview in scrollView.subviews {
if sview is UITextField, let textField = sview as? UITextField {
print(textField.text ?? "")
}
}
}
文件,我们就可以将其放入已安装的MongooseIM的代码路径中。
更精确地说,假设我们从the Downloads page at erlang-solutions.com的.beam
安装了MIM,因此我们要构建与3.0.0兼容的模块:
mongooseim_3.0.0-1~ubuntu~artful_amd64.deb
git clone https://github.com/esl/mongooseim
cd mongooseim
git checkout 3.0.0
放在mod_hello_world.erl
下./src/
rebar3 compile
完成后rebar3
并复制到我们从软件包中安装MIM的目标主机。但是请注意,直接从ejabberd文档获取的示例在MongooseIM中可能无法“按原样”运行。例如,在这个简单的模块中,我们将无法包含./_build/default/lib/mongooseim/mod_hello_world.beam
,因为MongooseIM没有这样的头文件-我们将不得不logger.hrl
。