BlakeWilliams / envy

dotenv like easy loading of environment variables in Elixir
MIT License
70 stars 10 forks source link

How do I use envy with phoenix? #20

Open webmstk opened 4 years ago

webmstk commented 4 years ago

I placed section

    unless Mix.env() == :prod do
      Envy.auto_load()
    end

to lib/app/application.ex and it does not work (I have System.get_env("DB_USER", "postgres") in config/dev.exs)

Narven commented 4 years ago
  1. create a .env file in the root of you App with content:
POSTGRES_USER=foobar
  1. open application.ex and add inside def start:
def start(_type, _args) do
  # ...
  unless Mix.env() == :prod do
    Envy.load([".env"])
  end
  # ...
end
  1. Any where on your application, just use:
<%= System.get_env("POSTGRES_USER") %>

It works on mine with

Erlang/OTP 23 [erts-11.0.3] [source] [64-bit] [smp:16:16] [ds:16:16:10] [async-threads:1] [hipe] [dtrace]
Elixir 1.10.4 (compiled with Erlang/OTP 23)
Phoenix Framework 1.5.4
jckw commented 3 years ago

What about setting env vars in config.exs? Pretty sure config gets run before application start, so the env variables aren't set yet.

J3RN commented 2 years ago

In our codebase, we have Envy.load([".env"]) at the top of config files that require env vars from .env.