2011-10-10 16 views
6

¿Hay alguna manera de pasar los parámetros al supervisor raíz de una aplicación que no sea con el archivo de configuración y la aplicación: get_env/1? Por ejemplo, por línea de comando?iniciando la aplicación erlang con el parámetro

Comienzo mi aplicación como "erl -pa ebin -run appname", y luego me comunico con ella mediante TCP/IP. El puerto TCP en el que escucha se establece en ebin/appname.app, en la parte env. Ahora me gustaría poder decir a mi aplicación que olvide eso y escuchar en un puerto que daré en la línea de comandos (algo así como "erl -pa ebin -run nombre de la aplicación -env [{puerto, 1234}]"). ¿Hay un patrón estandarizado para eso?

El problema es que a veces decido que la aplicación debe comenzar en otro puerto no predeterminado, con fines de prueba, y cambiar el archivo .app cada vez es solo una molestia.

Saludos, dijxtra

Respuesta

8

Sí. Puede reemplazar el valor de una variable de entorno a través de la línea de comandos, usando:

erl -appname key value 

y recuperar el parámetro usando:

application:get_env(appname, key). 
+0

Eres hermosa, gracias. Esto definitivamente debe agregarse [aquí] (http://www.erlang.org/doc/apps/kernel/application.html#get_env-1). – dijxtra