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.

Reply via email to