我有一个项目将用作模板。然后我将复制它并基于它创建一个子项目。我希望能够从上游更新它。
所有特定于子项目的
*.ex
文件都不会在git中。因此,它们必须手动创建并动态加载。
问题:如何将外部
.ex
加载到当前,然后编译呢?不是在运行时,而是在编译时。
这将类似于:
# my_controller.ex
defmodule MyAppWeb.MyController do
use MyAppWeb, :controller
def page1(conn, params) do
# ........
end
# HOW to implement this function?
inject_external_file_if_exists("my_controller.personal.ex")
end
特定于子项目的代码可能如下所示:
# my_controller.personal.ex
defmodule MyAppWeb.MyController do
use MyAppWeb, :controller
def specific_page1(conn, params) do
# ........
end
def specific_page2(conn, params) do
# ........
end
end
注意
my_controller.personal.ex
再次包含MyAppWeb.MyController
的定义。这是一个严格的要求。这个想法是合并他们而不是互相覆盖。