No se pueden capturar bloques de Ruby en los archivos
Pregunta
Por favor ayuda, estoy atrapado aquí ---
irb> a = "line of text\n line two\n line three"
irb> system("cat > test_file << #{a}")
cat: of: No such file or directory
cat: text: No such file or directory
=> false
Solución
Debe citar el parámetro interpolado:
system("cat > test_file << \"#{a}\"")
Y, cat está esperando un nombre de archivo, no un texto para agregar a test_file, entonces, esto funcionaría como creo que pretendía:
system("echo \"#{a}\" >> test_file")
Si quieres hacer esto en Ruby puro, házmelo saber y te daré un ejemplo.
Otros consejos
Escriba a en un archivo llamado " archivo de prueba " ;:
File.open("testfile", "w") do |io| io.print a done
Escribir en un archivo directamente ya ha sido cubierto por JesperE. Para escribir en un proceso (en este caso, un proceso "gato") use popen.
IO.popen("cat > foo", "w") do
|f|
f.write("line1\nline2\n")
end
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow