In Elixir applications, config/runtime.exs is often used to parse environment variables from System.get_env2/ and friends, and convert into Application configuration.
Since environment variables can only be strings, it is often necessary to cast from string values into booleans and integer values. E.g. config :my_app, :bool_value, System.get_env("BOOL_VALUE") == "true" config :my_app, :int_value, String.to_string(System.get_env("INT_VALUE", "5")) While there are entire libraries that deal with advanced runtime configuration, like Vapor <https://github.com/elixir-toniq/vapor> and elixir-specify <https://github.com/Qqwy/elixir-specify>, I believe there is an opportunity to simplify common patterns and duplicative code in Elixir configuration that often leads to confusion and edge case issues. My proposal is to add parsing for both booleans and integers to environment variable parsing. As an example: config :my_app, :bool_value, System.get_env_as!("BOOL_VALUE", "false", as: :boolean) config :my_app, :int_value, System.get_env_as!("INT_VALUE", "5", as: :integer) The trickiness would be in the acceptable range of edge case values. For example, "1" and "0" are often used for boolean values, in addition to "TRUE" and "FALSE". I believe there could be a reasonable compromise and appropriate documentation for addressing these issues. More complex parsing, such as floats and custom data types would not be supported. -- You received this message because you are subscribed to the Google Groups "elixir-lang-core" group. To unsubscribe from this group and stop receiving emails from it, send an email to elixir-lang-core+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/elixir-lang-core/03c630fb-affc-4f80-a7c8-6e4a694b8406n%40googlegroups.com.