4
votes

I am doing as written below in my project. But I only want to run it in Production mode, not in development mode, for this, I tried with Mix.env and it worked locally by giving me :dev or :prod but It didn't work on online API. It got an error as there is nothing like env.

I want to make it just for production with some kind of pattern matching function

  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)

any help will be appreciated!

1

1 Answers

6
votes

You'll have to set a config for this in the config/*.exs files as Mix is usually not included in production releases. You could just store the env value or a more meaningful name like :create_intercom_user.

In config/dev.exs and config/test.exs:

config :my_app, :create_intercom_user, false

In config/prod.exs:

config :my_app, :create_intercom_user, true

and then in your code:

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

or:

In config/config.exs:

config :my_app, :mix_env, Mix.env

and in your code:

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

(Replace :my_app with your app's name.)