From 4f379786345bf8c5323ce5659947767b34cb75ab Mon Sep 17 00:00:00 2001 From: Gabriel Andretta Date: Mon, 22 Aug 2011 16:09:57 -0300 Subject: [PATCH 1/3] doc condition with multiple args in Spanish readme --- README.es.rdoc | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/README.es.rdoc b/README.es.rdoc index 00bca24c..a1eb26cb 100644 --- a/README.es.rdoc +++ b/README.es.rdoc @@ -146,6 +146,26 @@ Podés definir tus propias condiciones fácilmente: "Lo siento, perdiste." end +Si tu condición acepta más de un argumento, podés pasarle un arreglo. Al +definir la condición puede resultarte conveniente utilizar el operador splat en +la lista de parámetros: + + set(:autorizar) do |*roles| # <- mirá el splat + condition do + unless sesion_iniciada? && roles.any? {|rol| usuario_actual.tiene_rol? rol } + redirect "/iniciar_sesion/", 303 + end + end + end + + get "/mi/cuenta/", :autorizar => [:usuario, :administrador] do + "Detalles de mi cuenta" + end + + get "/solo/administradores/", :autorizar => :administrador do + "Únicamente para aministradores!" + end + === Valores de Retorno El valor de retorno de un bloque de ruta determina al menos el cuerpo de la From 28db7486ef25588faf5440c0f84112ef9efd0564 Mon Sep 17 00:00:00 2001 From: Gabriel Andretta Date: Mon, 22 Aug 2011 16:41:07 -0300 Subject: [PATCH 2/3] doc stream helper in Spanish readme --- README.es.rdoc | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/README.es.rdoc b/README.es.rdoc index a1eb26cb..8b02d941 100644 --- a/README.es.rdoc +++ b/README.es.rdoc @@ -842,6 +842,56 @@ De manera similar, también podés asignar el código de estado y encabezados: También, al igual que +body+, tanto +status+ como +headers+ pueden utilizarse para obtener sus valores cuando no se les pasa argumentos. +=== Streaming De Respuestas + +A veces vas a querer empezar a enviar la respuesta a pesar de que todavía no +terminaste de generar su cuerpo. También es posible que, en algunos casos, +quieras seguir enviando información hasta que el cliente cierre la conexión. +Cuando esto ocurra, el +stream+ helper te va a ser de gran ayuda: + + get '/' do + stream do |out| + out << "Esto va a ser legen -\n" + sleep 0.5 + out << " (esperalo) \n" + sleep 1 + out << "- dario!\n" + end + end + +Podés implementar APIs de streaming, +{Server-Sent Events}[http://dev.w3.org/html5/eventsource/] y puede ser usado +como base para {WebSockets}[http://es.wikipedia.org/wiki/WebSockets]. También +puede ser usado para incrementar el throughput si solo una parte del contenido +depende de un recurso lento. + +Hay que tener en cuenta que el comportamiento del streaming, especialmente el +número de peticiones concurrentes, depende del servidor web utilizado para +servir la aplicación. Puede que algunos servidores, como es el caso de +WEBRick, no soporten streaming directamente, así el cuerpo de la respuesta será +enviado completamente de una vez cuando el bloque pasado a +stream+ finalice su +ejecución. + +Cuando se pasa +false+ como parámetro, no se va a enviar el mensaje +close+ al +objeto de stream. Queda en vos cerrarlo en el punto de ejecución que quieras. +Nuevamente, hay que tener en cuenta que este comportamiento es posible solo en +servidores que soporten eventos, como Thin o Rainbows. El resto de los +servidores van a cerrar el stream de todos modos. + + set :server, :thin + conexiones = [] + + get '/' do + # mantenemos abierto el stream + stream(false) { |salida| conexiones << salida } + end + + post '/' do + # escribimos a todos los streams abiertos + conexiones.each { |salida| salida << params[:mensaje] << "\n" } + "mensaje enviado" + end + === Log (Registro) En el ámbito de la petición, el helper +logger+ (registrador) expone From 8d80e5693804b77d114464bd685128be005ab111 Mon Sep 17 00:00:00 2001 From: Gabriel Andretta Date: Mon, 22 Aug 2011 17:08:57 -0300 Subject: [PATCH 3/3] fix typo in Spanish readme --- README.es.rdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.es.rdoc b/README.es.rdoc index 8b02d941..6652e35d 100644 --- a/README.es.rdoc +++ b/README.es.rdoc @@ -163,7 +163,7 @@ la lista de parámetros: end get "/solo/administradores/", :autorizar => :administrador do - "Únicamente para aministradores!" + "Únicamente para administradores!" end === Valores de Retorno