Como gravar arquivos (grandes) com Ruby Eventmachine
Passei vários dias agora encontrando alguns exemplos que não são de eco-servidor para eventmachine, mas simplesmente não parece haver nenhum. Digamos que eu queira escrever um servidor que aceite um arquivo e o grave em um arquivo temporário:
require 'rubygems'
require 'tempfile'
require 'eventmachine'
module ExampleServer
def receive_data(data)
f = Tempfile.new('random')
f.write(data)
ensure
f.close
end
end
EventMachine::run {
EventMachine::start_server "127.0.0.1", 8081, ExampleServer
puts 'running example server on 8081'
}
Escrever no arquivo bloquearia o reator, mas não entendi como fazê-lo 'estilo Eventmachine'. Eu precisaria ler os dados em pedaços e gravar cada pedaço em disco dentro de um bloco Em.next_tick?
Obrigado por qualquer ajuda Andreas