为生产Elixir Phoenix保留一项活动

时间:2016-08-10 08:13:54

标签: elixir phoenix-framework

我在下面的项目中写道。但是我只想在生产模式下运行它,而不是在开发模式下运行它,为此,我尝试使用Mix.env并通过给我:dev:prod在本地工作,但它没有&#39 ; t在线API工作。它有一个错误,因为没有像env。

我想将其用于具有某种模式匹配功能的生产

  Task.start(fn ->
    if user |> Intercom.get_user |> intercom_user? do
      Logger.info "User '#{user.username}' already present at Intercom."
    else
      Intercom.create_user(user, user_agent, requester_ip)
    end
  end)

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:4)

您必须在config/*.exs文件中为此设置配置,因为Mix通常不包含在生产版本中。您可以只存储env值或更有意义的名称,如:create_intercom_user

config/dev.exsconfig/test.exs

config :my_app, :create_intercom_user, false

config/prod.exs

config :my_app, :create_intercom_user, true

然后在你的代码中:

if Application.get_env(:my_app, :create_intercom_user) do
  Task.start(fn -> ... end)
end

或:

config/config.exs

config :my_app, :mix_env, Mix.env

并在您的代码中:

if Application.get_env(:my_app, :mix_env) == :prod do
  Task.start(fn -> ... end)
end

(将:my_app替换为您的应用名称。)