Tengo que ejecutar un comando en el fondo pero quiero tener el escape adecuado para su parámetro.Ejecutando comando de shell en el fondo de ruby con el argumento apropiado escapando
system("rake send_mails subject='#{params[:subject]}' 2> /dev/null 1> /dev/null &");
si escribo system("rake", "send_mails", params[:subject])
entonces yo no tengo "lugar" para los cambios de dirección y el signo &
. Si no, no tengo escapado para el parámetro subject
.
¿Cómo puedo resolver esto?
No estoy seguro, pero ¿intentar anidar llamadas 'system'? Por ejemplo: 'sistema (sistema (" rake "," send_mails ", params [: subject]),"/dev/null 1>/dev/null & ")' – fl00r
La llamada interna 'system()' se ejecuta luego el 'sistema()' externo falla sin ejecutar nada: 'TypeError: no se puede convertir verdadero en String' – Notinlist