Gur*_*der 5 elixir phoenix-framework
我有一个配置,我想将布尔值和整数变量作为环境传递。
BOOLEAN_VARIABLE=false
INTEGER_VARIABLE=5000
Run Code Online (Sandbox Code Playgroud)
如果找不到给定的环境变量,我还想设置默认配置。这里我将默认值设置为boolean_variabletrue,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
Run Code Online (Sandbox Code Playgroud)
在解析config.exs. 我很好奇是否有更好的方法来进行此配置。
您可以将它们保存为环境变量。您可以使用一个.env或其他一些文件来存储环境变量。然后在您的config文件中,您可以读取它们+您可以设置默认值。
这是一个例子。
.env file
BOOLEAN_VARIABLE=false
INTEGER_VARIABLE=4000
Run Code Online (Sandbox Code Playgroud)
System.get_env/2函数可以将基于字符串的默认值作为第二个参数。
在你的 Elixir 代码中你可以这样做:
System.get_env("BOOLEAN_VARIABLE", "false") |> Config.parse_boolean
System.get_env("INTEGER_VARIABLE", "2000") |> Config.parse_integer # or String.to_integer
Run Code Online (Sandbox Code Playgroud)
这种方法的好处是:
source .env命令获取它即可。