Krug.EnviromentReader (Krug v2.0.27) View Source

Provides a mechanism to simplificate the Ecto db configuration on build time.

Should be used whit a module that implements Krug.EctoEnviromentDecisor behavior and other module that implements Krug.EctoEnviroment behavior.

Utilization Example:

defmodule MyApp.Enviroment.Reader do

  use Krug.EnviromentReader, decisor: MyApp.EnviromentDecisor, enviroment: MyApp.Enviroment

end

After maked this, we could use it to configure a Ecto Repo

defmodule MyApp.App.Repo do

  use Ecto.Repo, otp_app: :ex_app, adapter: Ecto.Adapters.MyXQL
  alias MyApp.Enviroment.Reader
 
  def init(_type, config) do
    config = Keyword.put(config, :hostname,               Reader.read_key_value("APPDB_HOST"))
    config = Keyword.put(config, :port, String.to_integer(Reader.read_key_value("APPDB_PORT")))
    config = Keyword.put(config, :database,               Reader.read_key_value("APPDB_DATABASE"))
    config = Keyword.put(config, :username,               Reader.read_key_value("APPDB_USERNAME"))
    config = Keyword.put(config, :password,               Reader.read_key_value("APPDB_PASSWORD"))
    config = Keyword.put(config, :pool_size, 10)
    config = Keyword.put(config, :timeout, 60_000)
    config = Keyword.put(config, :ownership_timeout, 60_000)
    config = Keyword.put(config, :queue_target, 500)
    config = Keyword.put(config, :queue_interval, 10_000)
    {:ok, config}
  end
 
end