Pensandolo bien, la mejor solución es usar tee(1)

foca ~/projects/self/howsmycode (git: master*)
▸ script/console | tee tmp/foobar.log
>> 1
=> 1
>> ^D
foca ~/projects/self/howsmycode (git: master*)
▸ cat tmp/foobar.log
>> 1
=> 1
>> ^D
foca ~/projects/self/howsmycode (git: master*)
▸

-foca

2009/10/25 NachoKB <[email protected]>

> On Sat, Oct 24, 2009 at 00:11, gustavo c <[email protected]> wrote:
>
>> >> my_file = File.new("/home/gustavo/temp/foo.log", "a")
>> => #<File:/home/gustavo/temp/foo.log>
>> >> @cat.each {|e| my_file.puts "#{e.id} #{e.parent_id} #{e.name}
>> "}.sort_by(:id)
>> >> my_file.close
>>
>
> No es por ser pesado, pero para que no quede esto como referencia. Para
> usarlo por consola está bien, pero imaginate si salta un error en medio de
> tu código y el close no se ejecuta.
>
> Solución obvia: rodearlo con un begin y ensure.
>
> Solución más idiomática (y, a mi gusto, legible): usar File.open con un
> bloque. Es equivalente a #new, pero se encarga solito de garantizar que
> quede bien cerrado. En tu caso:
>
> File.open("...", "a) do |file|
>>   @cat.each { |e| ... }.sort_by(&:id)
>> end
>>
>
> nachokb
>
> _______________________________________________
> Ruby mailing list
> [email protected]
> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
>
>
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a