Why do you have to have the if
in code and not just inject the correct delegate when the service boots though?
Anyway, I believe Jose is saying set whatever you want to check in the appropriate config file, you can then get that with Application.get_env
or you can use System.get_env
if you want to get an regular system environment variables. You could probably do config :my_app, :execution_env, Mix.env()
in config/config.exs
I guess then Application.get_env(:my_app, :execution_env)
.
I think Jose is also implying that instead of checking against the env en todo, it’s better design to check against specific configurations, which is more readable and maintainable:
if Application.get_env(:my_app, :do_use_service) ...
if Applcation.get_env(:my_app, :logging_is_enabled) ...
vs
if Application.get_env(:my_app, :mode) == :dev then do_use_service()
See h Application.get_env
and h System.get_env
in iex
.