Closed i-n-g-m-a-r closed 5 years ago
It turns out Code.require_file/2
works just fine when running mix release.
The issue is that the Settings
module already exists in memory when Distillery loads ./config/config.exs
.
So the solution is to check whether module Settings already exists:
load_cfg = fn ->
with false <- Code.ensure_compiled?(Settings) do
with [{settings, _}] <- Code.require_file("settings.exs", "./config") do
settings.new
else
_noop -> :noop
end
else
_available -> Settings.new
end
end
cfg = load_cfg.()
Steps to reproduce
Implement a script (myapp/config/settings.exs) that loads settings, like so:
Call settings script from myapp/config/config.exs like so:
Verbose Logs
Description of issue
The
cfg
variable is a Settings struct with settings.distillery-2.0.12
Ubuntu 18.04.2 LTS Erlang/OTP 21 [erts-10.2.3] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe] Elixir 1.8.1 (compiled with Erlang/OTP 20)
rel/config.exs
, as it is often my first troubleshooting question, and you'll save us both time :)probably not interesting, standard stuff.
didn't find anything in particular.
it's definitely a runtime configuration issue, please see the steps to reproduce. when running my app with
mix phx.server
and so on, there's no problem. the problem happens right after: ==> Building release myapp:0.0.1 using environment prod