Erlang: ¿Cómo acceder a los indicadores de CLI (argumentos) como variables de entorno de la aplicación?

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

Pregunta

¿Cómo se accede a un indicador de línea de comando (argumentos) como variables de entorno en Erlang? (Como banderas, no ARGV) Por ejemplo:

RabbitMQ cli se parece a:

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

Si uno mira sasl.erl verá la línea:

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

¡Por alguna magia desconocida la variable sasl_error_logger se convierte en una tupla erlang! He intentado replicar esto en mi propia aplicación erlang , pero parece que solo puedo acceder a estos valores a través de init: get_argument , que devuelve el valor como una cadena.

¿Cómo se pasan valores a través de la línea de comandos y se puede acceder a ellos fácilmente como términos de erlang?

ACTUALIZACIÓN También para cualquiera que esté buscando, para usar las variables de entorno de la manera 'regular' use os:getenv("THE_VAR")

¿Fue útil?

Solución

Asegúrese de configurar un archivo de configuración de la aplicación

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

y luego puede configurar su línea de comando de esta manera:

-fred param 'billy'

Creo que necesita tener el parámetro en la configuración de su aplicación para hacer esto; nunca lo he hecho de otra manera ...

Alguna información más (más fácil que ponerla en un comentario)

Dado esto

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

Ciertamente puedo hacer esto:

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

pero (y esto puede ser importante) mi aplicación se inicia en este momento (es posible que solo necesite cargarse y no comenzar mirando el código application_controller).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top