如何在运行时配置Ecto?

时间:2016-05-17 18:07:45

标签: elixir ecto

setup instructions之后,我在config/config.exs文件中有以下Ecto配置:

config :my_app, MyApp.Repo,
  adapter: Ecto.Adapters.Postgres,
  url: "postgresql://postgres@localhost/myrepo",
  size: 20

如果我的理解是正确的,那么config.exs将在编译时进行评估。

有没有办法在运行时执行此配置步骤?

这适用于将作为已编译二进制文件(通过exrm)分发的应用程序。最终用户应该能够通过标志或环境变量自定义数据库URL和池大小,而不是通过编辑sys.config

1 个答案:

答案 0 :(得分:7)

使用{:system, "KEY" }例如:

可以从系统加载
config :my_app Repo
   url: {:system, "DATABASE_URL" },
   size: {:system, "DATABASE_POOL_SIZE" }

而不是

config :my_app, Repo,
   url: "ecto://postgres:postgres@localhost/ecto_simple",
   size: 20

在这种情况下,您可以设置Ecto以使用系统属性。当然,用户必须对其进行配置。