Seeds: scope compiler_options to seed run, restore in after

Remove global ignore_module_conflict from mix.exs. Set it only in
seeds.exs during eval_file and restore via try/after so crashes
do not leave the option enabled.
This commit is contained in:
Moritz 2026-03-04 17:08:27 +01:00
parent 70c3ca82ea
commit a98d921848
Signed by: moritz
GPG key ID: 1020A035E5DD0824
2 changed files with 16 additions and 10 deletions

View file

@ -2,8 +2,6 @@ defmodule Mv.MixProject do
use Mix.Project use Mix.Project
def project do def project do
Code.compiler_options(ignore_module_conflict: true)
[ [
app: :mv, app: :mv,
version: "0.1.0", version: "0.1.0",

View file

@ -4,9 +4,15 @@
# #
# Bootstrap runs in all environments. Dev seeds (members, groups, sample data) # Bootstrap runs in all environments. Dev seeds (members, groups, sample data)
# run only in dev and test. # run only in dev and test.
#
# Compiler option ignore_module_conflict is set only during seed evaluation
# so that eval_file of bootstrap/dev does not emit "redefining module" warnings;
# it is always restored in `after` to avoid hiding real conflicts elsewhere.
prev = Code.compiler_options()
Code.compiler_options(ignore_module_conflict: true) Code.compiler_options(ignore_module_conflict: true)
try do
# Always run bootstrap (fee types, custom fields, roles, admin, system user, settings) # Always run bootstrap (fee types, custom fields, roles, admin, system user, settings)
Code.eval_file("priv/repo/seeds_bootstrap.exs") Code.eval_file("priv/repo/seeds_bootstrap.exs")
@ -16,4 +22,6 @@ if Mix.env() in [:dev, :test] do
end end
IO.puts("✅ All seeds completed.") IO.puts("✅ All seeds completed.")
Code.compiler_options(ignore_module_conflict: false) after
Code.compiler_options(prev)
end