据我所知,在编译期间评估了模块属性。我试图遵循这个post关于Elixir中的模拟API:
defmodule Example.User do
@github_api Application.get_env(:example, :github_api)
def get(username) when is_binary(username) do
@github_api.make_request(:get, "/users/#{username}")
end
end
我想知道它是否会在生产中发挥作用。据我所知,在编译此模块时,无法访问应用程序。所以我的问题是:我可以使用模块属性来存储来自Application.get_env
的一些配置值吗?
答案 0 :(得分:1)
你绝对可以。只要使用指定给环境的MIX_ENV
编译应用程序,您就希望应用程序在其下运行,并且只要该调用评估您对该环境的期望,它就会正常工作。
要更深入地了解模块属性如何受到编译的影响,几乎与您所描述的情况相同,take a look at this blog post here。