Come si accede al flag della riga di comando (argomenti) come variabili di ambiente in Erlang. (Come le bandiere, non ARGV) Ad esempio:Erlang: Come accedere ai flag CLI (argomenti) come variabili di ambiente dell'applicazione?
RabbitMQ cli sembra qualcosa di simile:
erl \
...
-sasl errlog_type error \
-sasl sasl_error_logger '{file,"'${RABBITMQ_SASL_LOGS}'"}' \
... # more stuff here
Se si guarda sasl.erl
si vede la linea:
get_sasl_error_logger() ->
case application:get_env(sasl, sasl_error_logger) of
% ... etc
Con qualche magia sconosciuta la sasl_error_logger
variabile diventa una tupla di erlang! Ho provato a replicare questo nel mio Erlang application
, ma mi sembra di essere solo in grado di accedere a questi valori tramite init:get_argument
, che restituisce il valore come una stringa.
Come si passano i valori tramite la riga di comando e si è in grado di accedervi facilmente come termini di erlang?
UPDATE anche per chi cerca, per usare le variabili di ambiente nel modo 'normale' usare os:getenv("THE_VAR")
Alan, grazie per il suggerimento. Ho il param nel mio file '.app'. Buone notizie: ottengo il valore predefinito specificato nel file '.app'. Cattive notizie: non riesco a sovrascriverlo sulla riga di comando. –
Nate, potresti mostrarci il tuo file app e il comando con cui avvii erlang? – Zed
Sì, dovrebbe funzionare così probabilmente c'è qualcosa di sospetto nella tua linea di comando. Hai avviato la tua app quando accedi all'ambiente? –