Background
I know this was proposed before and refuted:
https://github.com/elixir-lang/elixir/issues/5608
However, I recently had an issue that would have benefited from
System.get_env! and was advised to create a proposal in this group and
reopen the discussion.
What was the issue?
Imagine you have a config.exs where you define some configurations. Imagine
one of the configurations is the following:
config :my_app,
geolix_db_path: System.get_env("PROJECTS_PATH") <>
"/my_app/lib/geoip/GeoLite2-Country.mmdb"
Now this may look normal, but what if you don't have the "PROJETCS_PATH"
variable defined?
What error do you think you would get?
We got this:
** (ArgumentError) argument error
(stdlib) eval_bits.erl:101: :eval_bits.eval_exp_field1/6
(stdlib) eval_bits.erl:92: :eval_bits.eval_field/3
(stdlib) eval_bits.erl:68: :eval_bits.expr_grp/4
(stdlib) erl_eval.erl:484: :erl_eval.expr/5
(stdlib) erl_eval.erl:888: :erl_eval.expr_list/6
(stdlib) erl_eval.erl:240: :erl_eval.expr/5
(stdlib) erl_eval.erl:232: :erl_eval.expr/5
What now?
If you find this error message borderline useless and beyond cryptic, then you
are with me.
The problem is that the stacktrace is obfuscated while the config file is being
evaluated.
The WHY of the proposal
A way of avoiding this would be to have a System.get_env! that blows
immediately making the error very clear.
I know I can use || raise "error" but I would like to avoid that every time I
use System.get_env in a config file (or somewhere else for that matter).
Have you imagined what is like reading a config.ex file hundreds of lines long
while using the || raise trick?
We already have trouble managing our huge config files, adding this would make
it even worst.
Additional info
This discussion was generated from the forums. The original post with all the
information can be seen here:
https://elixirforum.com/t/mix-exs-does-not-compile/20516
--
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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/elixir-lang-core/0019a9eb-5b02-42db-a33f-5564401fde60%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.