全域性 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 模組的修改歷史。讓我們點選 釋出 按鈕

找到對應的釋出歷史,點選 檢視詳情

就能看到此次的修改內容
