【问题标题】:Elixir's module attributes in Phoenix production凤凰生产中 Elixir 的模块属性
【发布时间】:2017-03-30 17:46:06
【问题描述】:

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

【问题讨论】:

  • 我相信你可以而且你应该
  • 是的,您可以,而且没有任何问题。但是github_api 的值必须在编译时对您的应用程序可用。如果您已经在 env 文件中指定了它,它应该可以正常工作。

标签: module elixir phoenix-framework


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2017-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-08
    相关资源
    最近更新 更多