解析 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 依赖性,这会导致在不同环境中出现非常不可预测的行为。
我有配置,我想将布尔和整数变量作为环境传递。
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 依赖性,这会导致在不同环境中出现非常不可预测的行为。