Aplicación simple Ruby Sinatra - Datos POST sin procesar

Me gustaría configurar una aplicación Sinatra simple para capturar los datos POST sin procesar que se envían a la URL / y guardar estos datos en el sistema de archivos como un archivo con el formato AAAAMMDD-HHMMSS.json.

Los datos que publicaré en la URL serán datos de texto simple en formato JSON.

¿Cuál es la mejor manera de configurar esta sencilla aplicación Sinatra? No estoy seguro de cómo capturar los datos POST sin procesar.

ACTUALIZAR / Código:

post '/' do
    raw = request.env["rack.input"].read
    n = DateTime.now
    filename = n.strftime("%Y%m%d") + "T" + n.strftime("%H%M%S") #any way to include microseconds?
    # write to file
end

preguntado el 16 de mayo de 11 a las 18:05

Vea la respuesta a continuación y los comentarios. He probado todos los métodos mencionados en los comentarios de esta página. gittr.com/index.php/archive/… -

Ninguno de esos métodos funcionó. ¿Cómo soluciono este problema? -

1 Respuestas

Algo como esto debería funcionar para usted:

post "/" do
  File.open("#{Time.now.strftime("%Y%m%d-%H%M%S")}.json", "w") do |f| 
    f.puts params["data"]    
  end 
end

contestado el 16 de mayo de 11 a las 22:05

Guau. Me puse a hacerlo mientras modificaba la pregunta. Eso debería hacer el truco. ¿Alguna forma de incluir los milisegundos en la marca de tiempo? - BuddyJoe

Time.now.strftime("%Y%m%d-%H%M%S%L") con los milisegundos. - Vasiliy Ermolovich

Tuve que actualizar a 1.92 en Windows para obtener esto. 1.87 en Windows falta la opción% L. Me estaba volviendo loco. - BuddyJoe

mmm. "datos" y: los datos no funcionan. ¿Cómo solucionas este problema? ¿Necesito enviar un determinado encabezado de solicitud para que esto funcione? - BuddyJoe

Usé el siguiente jQuery: $.ajax({type: 'POST', url: '/', data: '{data: "someData"}'}); de firebug para probar este fragmento. - intellidiot

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.