Phoenix生产中的Elixir模块属性

时间:2017-03-30 06:47:46

标签: module elixir phoenix-framework

据我所知,在编译期间评估了模块属性。我试图遵循这个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的一些配置值吗?

1 个答案:

答案 0 :(得分:1)

你绝对可以。只要使用指定给环境的MIX_ENV编译应用程序,您就希望应用程序在其下运行,并且只要该调用评估您对该环境的期望,它就会正常工作。

要更深入地了解模块属性如何受到编译的影响,几乎与您所描述的情况相同,take a look at this blog post here