Soy bastante nuevo en ruby y actualmente estoy leyendo el libro de Pica para familiarizarme con todo. Encontré la sección File.open donde se analiza tomar un bloque como parámetro de una llamada File.open y luego garantizar que el archivo esté cerrado. Ahora esto suena como una manera absolutamente brillante de evitar dispararse en el pie y como estoy peligrosamente bajo en los dedos, creo que lo intentaré. Aquí está lo que escribí (en IRB si lo que importa):File.open y bloques en Ruby 1.8.7
File.open('somefile.txt', 'r').each { |line| puts line }``
Mi expectativa era que el archivo somefile.txt
conseguiría abrir, leer, imprimir y cerrado, ¿verdad? Por lo que puedo decir mal. Si uso lsof
para ver los identificadores de archivo abiertos, todavía está abierto. Sin embargo, si lo hago
f = File.open('somefile.txt', 'r').each { |line| puts line }
f.close()
Estoy usando bloques erróneos en este ejemplo, o tengo no pude entender el significado de File.open cuando se utiliza con un bloque. He leído la sección en ruby-doc.org related to File.open, pero eso solo parece confirmar que lo que estoy haciendo debería funcionar como se esperaba.
¿Alguien puede explicar lo que estoy haciendo mal?
File.open ('somefile.txt', 'r') {| f | f.each_line {| línea | puts line}} también funciona. ¡Gracias! – OldTroll