Elixir 为制作长生不老药凤凰而保持活动

Elixir 为制作长生不老药凤凰而保持活动,elixir,phoenix-framework,Elixir,Phoenix Framework,在我的项目中,我正在做下面写的事情。但我只想在生产模式下运行它,而不是在开发模式下运行,为此,我尝试了Mix.env,它通过给我:dev或:prod在本地运行,但在在线API上不起作用。它得到了一个错误,因为没有什么比env更好的了 我想让它只是为了生产某种模式匹配功能 Task.start(fn -> if user |> Intercom.get_user |> intercom_user? do Logger.info "User '#{user.

在我的项目中,我正在做下面写的事情。但我只想在生产模式下运行它,而不是在开发模式下运行,为此,我尝试了
Mix.env
,它通过给我
:dev
:prod
在本地运行,但在在线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)

任何帮助都将不胜感激

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

config/dev.exs
config/test.exs
中:

config :my_app, :create_intercom_user, false
config :my_app, :create_intercom_user, true
config :my_app, :mix_env, Mix.env
config/prod.exs
中:

config :my_app, :create_intercom_user, false
config :my_app, :create_intercom_user, true
config :my_app, :mix_env, Mix.env
然后在代码中:

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

config/config.exs
中:

config :my_app, :create_intercom_user, false
config :my_app, :create_intercom_user, true
config :my_app, :mix_env, Mix.env
在您的代码中:

if Application.get_env(:my_app, :create_intercom_user) do
  Task.start(fn -> ... end)
end
if Application.get_env(:my_app, :mix_env) == :prod do
  Task.start(fn -> ... end)
end
(将
:my_app
替换为您的应用程序名称。)