Application.fetch_env可以用什么方式!(:myapp,:var)是否不安全



我正试图从信条中理解这个警告:

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相同。

最新更新