我正试图从信条中理解这个警告:
Module attribute @types makes use of unsafe Application configuration call Application.fetch_env!/2
我的模块看起来像:
@types Application.fetch_env!(:myapp, :record_types)
schema "bar" do
field :type, Ecto.Enum, values: @types, primary_key: true
end
为什么这个电话被认为是不安全的?
TL;DR:请改用Application.compile_env/3
。
模块主体在编译时进行评估。也就是说,在runtime.exs
中设置的任何内容都将在运行时被丢弃。
我不确定是否有人建议在引用错误消息的摘录后使用Application.compile_env/3
,但推理与编译时使用Application.get_env/3
相同。