엘릭서의 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
이런 식으로 모듈이 컴파일될때 컨피그값을 불러와서 해당 모듈의 고정된 상수와 같이 사용할 수 있다.