全局 Lua 模块

在用 Edgelang 编写自定义的 Edge 规则时,有时会需要调用自定义的 Lua 模块,此时可以通过在 全局 Lua 模块 中增加此 Lua 模块。

1. 创建全局 Lua 模块

下面我们看下如何创建一个全局 Lua 模块,并在 Edgelang 中引用它。

首先点击 全局配置

然后点击左侧导航栏的 全局 Lua 模块 进入全局 Lua 模块页面。

在这个页面中,会列出已经存在的全局 Lua 模块,点击 新建 Lua 模块 按钮创建一个新模块。

弹出的 新建 Lua 模块 对话框中提供以下配置项:

  • 模块名称:填写模块名称,即后续在 Edgelang 中引用时使用的名称。
  • 上传 Lua 文件:点击 选择文件 直接导入已有的 .lua 文件,模块名称默认使用文件名。
  • Lua 代码:在编辑框中直接编写 Lua 代码,支持开启 Vim 模式 进行编辑。
  • 启动时运行:开启后,Edge Node 启动时会在每个 worker 进程初始化时调用该模块的 init_worker() 函数。注意:启用后,修改该 Lua 模块配置将触发 Edge Node 的优雅重启。此选项于 26.6.1-1 版本首次引入。

例如,编写一个简单的返回问候语的模块:

local _M = {}
function _M.say_hello()
    return "hello world!"
end

return _M

填写完毕后点击 保存 按钮进行保存,Lua 模块会自动下发到每个节点,之后即可在 Edgelang 代码中引用:

true =>
    say(foreign-call(module: "custom_lua_module", func: "say_hello"));

2. 同步选项

页面右上方是 同步选项,含义同 全局配置

有点区别的是,当取消选中 Automatic Synchronization 后,全局 Lua 模块除了支持复制所有 Lua 模块到指定分区外,还支持单独复制某一个 Lua 模块到指定分区,让我们点击复制按钮。

然后选择要同步的分区,点击 copy,当前分区的配置就会覆盖指定分区的配置。

3. 修改历史

可以在发布页面查看同一个分区下 Lua 模块的修改历史。让我们点击 发布 按钮

找到对应的发布历史,点击 查看详情

就能看到此次的修改内容