8000 GitHub - mattste/config_tuples: Distillery's config provider to replace config tuples
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

mattste/config_tuples

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
< 8E2F div class="react-directory-filename-column">
 
 

Repository files navigation

ConfigTuples for Distillery releases

Hex.pm Hex.pm Hex.pm Inline docs

ConfigTuples provides a distillery's config provider that replace config tuples (e.g {:system, value}) to their expected runtime value.

Usage

Documentation can be found at https://hexdocs.pm/config_tuples.

Add the package by adding config_tuples to your list of dependencies in mix.exs:

def deps do
  [
    {:config_tuples, "~> 0.1.0"}
  ]
end

Then, add it to the config providers of distillery in rel/config.exs

release :myapp do
  # ...snip...
  set config_providers: [
    ConfigTuples.Provider
  ]
end

This will result in ConfigTuples.Provider being invoked during boot, at which point it will evaluate the current configuration for all the apps and replace the config tuples when needed, persisting it in the configuration.

Config tuples

The config tuple always start with :system, and can have some options as keyword, the syntax are like this:

  • {:system, env_name}
  • {:system, env_name, opts}

The available options are:

  • type: Type to cast the value, one of :string, :integer, :atom, :boolean. Default to :string
  • default: Default value if the environment variable is not setted. Default no nil
  • transform: Function to transform the final value, the syntax is {Module, :function}

Example

This could be an example for Ecto repository and logger:

config :my_app,
    uri: {:system, "HOST", transform: {MyApp.UriParser, :parse}}

config :my_app, MyApp.Repo,
  adapter: Ecto.Adapters.MySQL,
  username: {:system, "DATABASE_USERNAME", default: "root"},
  password: {:system, "DATABASE_PASSWORD", default: "toor"},
  database: {:system, "DATABASE_DB", default: "myapp"},
  hostname: {:system, "DATABASE_HOST", default: "localhost"},
  port: {:system, "DATABASE_PORT", type: :integer, default: 3306},
  pool_size: {:system, "DATABASE_POOL_SIZE", type: :integer, default: 10}

config :logger,
  level: {:system, "LOG_LEVEL", type: :atom, default: :info}

About

Distillery's config provider to replace config tuples

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Elixir 100.0%
0