如何在编译时将代码从外部文件包含到当前文件中?

问题描述 投票:0回答:0

我有一个项目将用作模板。然后我将复制它并基于它创建一个子项目。我希望能够从上游更新它。

所有特定于子项目的

*.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
的定义。这是一个严格的要求。这个想法是合并他们而不是互相覆盖。

elixir phoenix-framework
© www.soinside.com 2019 - 2024. All rights reserved.