How To Configuring Elixir OTP Applications

How To Configuring Elixir OTP Applications

  • Config Modules

  • 엘릭서의 OTP기반 어플리케이션은 간단하게 key-value 형태의 config 정보를 코드상에 명시하여 빌드타임에 이를 동적으로 이를 불러와 메모리에 저장할 수 있다.

Example

  • config/config.exs
import Config

Config.config :conf, some_config: "im.. some... value!"
  • iex
iex -S mix
...
Application.get_env(:conf, :some_config)
>> "im.. some... value!"
  • 이렇게 config/config.exs에 저장한 key-value를 빌드할 때 불러올 수 있다.

  • 추가로 prod, dev 등 각기 다른 환경별 key-value 값을 저장해두고 빌드시점의 MIX_ENV에 따라 동적인 값을 불러올 수도 있다.

  • config/config.exs

import Config

Config.config :conf, some_config: "im.. some... value!"

# MIX_ENV 환경변수에 해당하는 환경에 대한 config 값을 부러옴
Config.import_config "#{Mix.env()}".exs
  • config/dev.exs
import Config

Config.config :conf, some_config: "im dev... value!!!"
  • iex
MIX_ENV=dev iex -S mix
...
Application.get_env(:conf, :some_config)
>> "im.. dev... value!!!"
  • 이렇게 불러올 수 있다.

  • 모듈 속성(Module Attrobite)와 조합하기
defmodule Hello do
    @conf Application.get_env(:conf, :some_config)
    def hello do
        IO.puts @conf
    end
end

이런 식으로 모듈이 컴파일될때 컨피그값을 불러와서 해당 모듈의 고정된 상수와 같이 사용할 수 있다.