Erlang : 응용 프로그램 환경 변수로 CLI 플래그 (인수)에 액세스하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1213108

문제

Erlang의 환경 변수로서 하나의 액세스 명령 줄 플래그 (인수)는 어떻게합니까? (ARGV가 아닌 플래그로) : 예를 들어 :

Rabbitmq Cli는 다음과 같습니다.

erl \
...
-sasl errlog_type error \
-sasl sasl_error_logger '{file,"'${RABBITMQ_SASL_LOGS}'"}' \
... # more stuff here

하나를 보면 sasl.erl 당신은 줄을 봅니다 :

get_sasl_error_logger() ->
   case application:get_env(sasl, sasl_error_logger) of
% ... etc

알려지지 않은 마법으로 sasl_error_logger 변수는 Erlang 튜플이됩니다! 나는 내 자신의 Erlang에서 이것을 복제하려고 시도했다 application,하지만 나는이 값에만 액세스 할 수있는 것 같습니다. init:get_argument, 값을 문자열로 반환합니다.

한 사람은 CommandLine을 통해 값을 어떻게 전달하고 Erlang 용어로 쉽게 액세스 할 수 있습니까?

업데이트 또한 '정기'방식으로 환경 변수를 사용하는 사람이라면 누구나 사용합니다. os:getenv("THE_VAR")

도움이 되었습니까?

해결책

응용 프로그램 구성 파일을 설정하십시오

{application, fred,
 [{description, "Your application"},
  {vsn, "1.0"},
  {modules, []},
  {registered,[]},
  {applications, [kernel,stdlib]},
  {env, [
    {param, 'fred'}
        ]
...

그런 다음 다음과 같이 명령 라인을 설정할 수 있습니다.

-fred param 'billy'

이 작업을 수행하려면 응용 프로그램 구성에 매개 변수가 있어야한다고 생각합니다. 다른 방법으로는 한 번도 해본 적이 없습니다 ...

더 많은 정보 (댓글에 넣는 것보다 쉽습니다)

이것을 주어졌습니다

{emxconfig, {ets, [{keypos, 2}]}},

나는 확실히 이것을 할 수있다 :

   {ok, {StorageType, Config}} = application:get_env(emxconfig),

하지만 (그리고 이것은 중요 할 수 있습니다) 내 응용 프로그램은 현재 시작되었습니다 (실제로로드해야 할 필요가 있고 실제로 Application_Controller 코드를 보면서 시작하지 않아도됩니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top