解析 config.exs 中的整数和布尔可配置变量

Parsing integer and boolean configurable variables in config.exs

我有配置,我想将布尔和整数变量作为环境传递。

BOOLEAN_VARIABLE=false
INTEGER_VARIABLE=5000

如果找不到给定的环境变量,我也有我想设置的默认配置。 在这里,我将 boolean_variable 的默认值设置为 true,integer_variable 的默认值是 2000。

boolean_variable =
  case System.get_env("BOOLEAN_VARIABLE") do
    "false" -> false
    _ -> true
  end

integer_variable =
  case System.get_env("INTEGER_VARIABLE") do
    nil -> 2000
    value -> String.to_integer(value)
  end

config.exs 中解析这些变量时,我在配置中调用了数十个。我很好奇是否有更好的方法来进行此配置。

您可以将它们保存为环境变量。 您可以有一个 .env 或其他一些文件来存储环境变量。 然后在你的config文件中,你可以阅读它们+你可以设置默认值。

这是一个例子。

.env file
BOOLEAN_VARIABLE=false
INTEGER_VARIABLE=4000

System.get_env/2 函数可以将基于字符串的默认值作为第二个参数。

在你的长生不老药代码中你可以这样做:

System.get_env("BOOLEAN_VARIABLE", "false") |> Config.parse_boolean
System.get_env("INTEGER_VARIABLE", "2000") |> Config.parse_integer # or String.to_integer

这种方法的好处是:

  • 您的可配置变量是从环境中读取的
  • 直接在 .env 文件中更改值很容易,然后只需使用 source .env 命令获取它即可。
  • 对于docker & docker-compose,可以直接设置变量。
  • 您的 elixir 和 phoenix 应用程序将保持模块化。
  • 您可以避免 compile-time 依赖性,这会导致在不同环境中出现非常不可预测的行为。