GenServer呼叫我這樣定義一個宏:內宏觀
defmodule Test do
defmacro __using__ do
quote do
require Test
import Test
end
end
defmacro my_macro do
quote do
Gernserver.call() # generic server call from other module
end
end
end
我有我建立一個lib這裏面的代碼。當在另一個應用程序中測試這個庫時,我在具有use Test
的文件上出現編譯錯誤。
錯誤:exited in: GenServer.call ...
exit no process
(在my_macro調用的行上,更具體地說是在genserver調用中)。就好像genserver沒有運行,這不是因爲它是編譯時間。
使用宏將一個簡單的Application.ensure_all_started(:lib_name)添加到似乎解決了這個問題。但是,再次,在編譯時代碼不應該運行,對嗎?或者在這裏,我沒有看到?也許我不能在宏上使用genserver調用?
謝謝。
你能張貼在那裏你調用這個宏的代碼從? – Dogbert
@Dogbert當然,這裏是:https://gist.github.com/jbernardo95/7f1b6fc604f485af1a237a28ffc5669e – jbernardo