Current section
Files
Jump to
Current section
Files
README.md
# ExEnvTool provides support of Elixir terms in system env variables.For security reasons only literals/terms are allowed in configs (no functions, macros, modules etc).# Installation```mix archive.install github coingaming/ex_env tag vX.X.X --force```where X.X.X is ExEnv [version](https://github.com/heathmont/ex_env/releases) in semver format.# UsageFor every OTP application, default system variable name is **<UPPER_CASE_OTP_APP>_CONFIG**. Example:### OS```export BEST_APP_CONFIG=" \ [ \ { \ BestApp.Repo, \ [ \ adapter: Ecto.Adapters.Postgres, \ url: \"ecto://postgres:postgres@localhost/best_app\", \ pool_size: 10 \ ] \ }, \ { \ BestApp.Endpoint, \ [ \ http: [port: 4001], \ server: true \ ] \ }, \ { \ :workers_pool_size, \ 100 \ } \ ] \"```### config.exs```elixiruse ExEnv # put this line to the bottom of file```### source code```elixiriex> Application.get_env(:best_app, :workers_pool_size)100iex> Application.get_env(:best_app, BestApp.Repo)[ adapter: Ecto.Adapters.Postgres, url: "ecto://postgres:postgres@localhost/best_app", pool_size: 10]```### external applicationsBy default **use ExEnv** expression allows to use system-variable based configs for:- main OTP application of project- all project dependencies- :logger OTP applicationIf you need to configure other OTP application - you can use **ExEnv.config** macro manually in **config.exs** (or other config) file```elixiruse ExEnvExEnv.config(:other_app)ExEnv.config(:other_app, "CUSTOM_ENV_VAR")```