在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
答案 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以使用系统属性。当然,用户必须对其进行配置。