@v0idpwn I am surprised actually, I too was believing that this was compile-time only but indeed the values defined here must be available at runtime and are not stored into a file like in a release.
So the runtime execution erases the value set before compilation.
What is confusing is that if you wanted to have this config:
import Config
config :demo, foo: System.get_env("FOO")
And this code:
defmodule Demo do
@foo Application.get_env(:demo, :foo)
def foo do
@foo
end
end
You cannot call FOO=bar mix compile and then just iex -S mix and get the expected value, because iex -S mix will always trigger a recompilation. The code above will emit a warning as you should use Application.compile_env. Very different behaviour than calling @foo System.get_env("FOO") directly.
Personnally, I just put everything possible in runtime.exs.






















