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

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

就能看到此次的修改內容