Estoy tratando de ejecutar algunos scripts de terceros desde dentro de mi programa Ruby.¿Cómo puedo generar variables de entorno para un shell de comandos en un script de Ruby?
Antes de poder ejecutarlos, me requieren un archivo. En la línea de comandos todo funciona bien, pero dentro de Ruby no funciona. Descubrí que los comandos del sistema abrirán un nuevo proceso de shell secundario y cualquier fuente se realizará y no se podrá ver desde el proceso del shell primario que ejecuta el script de Ruby. Cuando finaliza la llamada al sistema, también se mata al shell hijo.
¿Cómo soluciono este problema?
Lo intentaré. Entonces, ¿esto significa que el script puede alterar las variables de entorno de su proceso de shell que contiene y, por lo tanto, cualquier otro proceso secundario creado a través de llamadas al sistema con inherit? – robodisco
No, pero cualquier proceso ejecutado desde el script de Ruby heredará las variables del script. – Geo
Lo anterior funciona para un solo hilo y hago lo siguiente. Pero una pregunta que tengo ¿cómo uso una COPIA fusionada del entorno con IO.popen? de alguna manera no parece funcionar. con "sistema" que puedo hacer: # ... crear una nueva "ruta" aquí subEnv = Hash.new; subEnv.merge! (ENV); # copy old environment subEnv ['PATH'] = ruta; # establecer nuevos valores en la copia system (subEnv, commandLine); – peterk