diff --git a/README.es.rdoc b/README.es.rdoc index 554de397..bf5bcfdf 100644 --- a/README.es.rdoc +++ b/README.es.rdoc @@ -1,7 +1,7 @@ = Sinatra -Sinatra es un DSL (Lenguaje Específico de Dominio) para crear -aplicaciones web rápidamente en Ruby con un mínimo esfuerzo: +Sinatra es un DSL para crear aplicaciones web rápidamente en Ruby con un mínimo +esfuerzo: # miapp.rb require 'sinatra' @@ -9,7 +9,7 @@ aplicaciones web rápidamente en Ruby con un mínimo esfuerzo: 'Hola mundo!' end -Instalá la gem (gema) y ejecutá la aplicación con: +Instalá la gem y ejecutá la aplicación con: gem install sinatra ruby -rubygems miapp.rb @@ -18,8 +18,8 @@ Podés verla en: http://localhost:4567 == Rutas -En Sinatra, una ruta es un método HTTP apareado con un patrón de una URL. -Cada ruta es asociada con un bloque: +En Sinatra, una ruta está compuesta por un método HTTP y un patrón de una URL. +Cada ruta se asocia con un bloque: get '/' do .. mostrar algo .. @@ -45,7 +45,7 @@ través de el hash params: get '/hola/:nombre' do # coincide con "GET /hola/foo" y "GET /hola/bar" - # params[:nombre] es 'foo' o 'bar' respectivamente + # params[:nombre] es 'foo' o 'bar' "Hola #{params[:nombre]}!" end @@ -55,9 +55,8 @@ También podés acceder a los parámetros nombrados usando parámetros de bloque "Hola #{n}!" end -Los patrones de ruta también pueden incluir parámetros splat o wildcard -(plaf o comodín), accesibles a través del arreglo -params[:splat]. +Los patrones de ruta también pueden incluir parámetros splat (o wildcard), +accesibles a través del arreglo params[:splat]. get '/decir/*/al/*' do # coincide con /decir/hola/al/mundo @@ -69,7 +68,7 @@ Los patrones de ruta también pueden incluir parámetros splat o wildcard params[:splat] # => ["path/al/archivo", "xml"] end -Búsqueda de rutas con Expresiones Regulares: +Rutas con Expresiones Regulares: get %r{/hola/([\w]+)} do "Hola, #{params[:captures].first}!" @@ -82,10 +81,10 @@ O con un parámetro de bloque: end Las rutas pueden incluir una variedad de condiciones de selección, como por -ejemplo el user agent (agente de usuario): +ejemplo el user agent: get '/foo', :agent => /Songbird (\d\.\d)[\d\/]*?/ do - "Estás usando la versión #{params[:agent][0]} de Songbird" + "Estás usando la versión de Songbird #{params[:agent][0]}" end get '/foo' do @@ -106,16 +105,15 @@ ejemplo, el archivo ./public/css/style.css se accede a través de == Vistas / Plantillas -Se asume que las plantillas (templates) están ubicadas directamente -bajo el directorio ./views. Para usar un directorio de vistas -(views) diferente: +Se asume que las plantillas están ubicadas directamente bajo el directorio +./views. Para usar un directorio de vistas diferente: set :views, File.dirname(__FILE__) + '/plantillas' Es importante acordarse que siempre tenés que referenciar a las plantillas con símbolos, incluso cuando se encuentran en un subdirectorio (en este caso tenés que usar :'subdir/plantilla'). Los métodos de renderización van a -renderizar directamente cualquier string que reciban como argumento. +renderizar directamente cualquier string que se les pase como argumento. === Plantillas Haml @@ -129,7 +127,6 @@ La gem/librería haml es necesaria para para renderizar plantillas HAML: end Renderiza ./views/index.haml. -{Haml's options}[http://haml-lang.com/docs/yardoc/file.HAML_REFERENCE.html#options] Las {opciones de Haml}[http://haml-lang.com/docs/yardoc/file.HAML_REFERENCE.html#options] pueden ser ajustadas globalmente a través de las configuraciones de Sinatra, @@ -231,15 +228,15 @@ Renderiza el template contenido en el string. === Accediendo a Variables en Plantillas Las plantillas son evaluadas dentro del mismo contexto que los manejadores de -ruta (route handlers). Las variables de instancia asignadas en los -manejadores de ruta son accesibles directamente por las plantillas: +ruta. Las variables de instancia asignadas en los manejadores de ruta son +accesibles directamente por las plantillas: get '/:id' do @foo = Foo.find(params[:id]) haml '%h1= @foo.nombre' end -O es posible especificar un Hash explícito de variables locales: +O es posible especificar un Hash de variables locales explícitamente: get '/:id' do foo = Foo.find(params[:id]) @@ -299,7 +296,7 @@ una plantilla es renderizada. Podés desactivar los layouts pasando haml :index, :layout => !request.xhr? end -== Ayudantes (Helpers) +== Ayudantes Usá el método top-level helpers para definir métodos ayudantes que pueden ser utilizados dentro de los manejadores de rutas y las plantillas: @@ -314,9 +311,9 @@ pueden ser utilizados dentro de los manejadores de rutas y las plantillas: bar(params[:nombre]) end -== Filtros (Filters) +== Filtros -Los Before Filters son evaluados antes de cada petición dentro del contexto de +Los filtros before son evaluados antes de cada petición dentro del contexto de la petición y pueden modificar la petición y la respuesta. Las variables de instancia asignadas en los filtros son accesibles por las rutas y las plantillas: @@ -331,10 +328,10 @@ plantillas: params[:splat] #=> 'bar/baz' end -Los After Filter son evaluados después de cada petición dentro del contexto de -la petición y también pueden modificar la petición y la respuesta. Las -variables de instancia asignadas en before filters y rutas son accesibles por -los after filters: +Los filtros After son evaluados después de cada petición dentro del contexto de +la petición y también pueden modificar la petición y la respuesta. Las +variables de instancia asignadas en los filtros before y rutas son accesibles +por los filtros after: after do puts response.status @@ -352,7 +349,7 @@ patrón: session[:ultimo_slug] = slug end -== Interrumpiendo (Halting) +== Interrupción Para detener inmediatamente una petición dentro de un filtro o una ruta usá: @@ -374,7 +371,7 @@ Con encabezados ... halt 402, { 'Content-Type' => 'text/plain' }, 'venganza' -== Pasando +== Paso Una ruta puede pasarle el procesamiento a la siguiente ruta que coincida con la petición usando pass: @@ -415,7 +412,7 @@ Ejecutar cuando el entorno es :production o :test: == Manejo de errores Los manejadores de errores se ejecutan dentro del mismo contexto que las rutas -y los before filters, lo que significa que podés usar, por ejemplo, +y los filtros before, lo que significa que podés usar, por ejemplo, haml, erb, halt, etc. === No encontrado (Not Found) @@ -507,9 +504,9 @@ método top-level +use+: end Las semánticas de +use+ son idénticas a las definidas para el DSL -Rack::Builder[http://rack.rubyforge.org/doc/classes/Rack/Builder.html] -(más frecuentemente usadas desde archivos rackup). Por ejemplo, el método -+use+ acepta argumentos múltiples/variables así como bloques: +Rack::Builder[http://rack.rubyforge.org/doc/classes/Rack/Builder.html] (más +frecuentemente usado desde archivos rackup). Por ejemplo, el método +use+ +acepta argumentos múltiples/variables así como bloques: use Rack::Auth::Basic do |nombre_de_usuario, password| nombre_de_usuario == 'admin' && password == 'secreto' @@ -520,11 +517,11 @@ debugging, enrutamiento URL, autenticación, y manejo de sesiones. Sinatra usa muchos de estos componentes automáticamente de acuerdo a su configuración para que típicamente no tengas que usarlas (con +use+) explícitamente. -== Testing +== Pruebas -Los test para las aplicaciones Sinatra pueden ser escritos utilizando -cualquier framework o librería de testing basada en Rack. Se recomienda -usar {Rack::Test}[http://gitrdoc.com/brynary/rack-test]: +Las pruebas para las aplicaciones Sinatra pueden ser escritas utilizando +cualquier framework o librería de pruebas basada en Rack. Se recomienda usar +{Rack::Test}[http://gitrdoc.com/brynary/rack-test]: require 'mi_app_sinatra' require 'rack/test' @@ -536,14 +533,14 @@ usar {Rack::Test}[http://gitrdoc.com/brynary/rack-test]: Sinatra::Application end - def test_por_defecto + def test_mi_defecto get '/' assert_equal 'Hola Mundo!', last_response.body end def test_con_parametros get '/saludar', :name => 'Franco' - assert_equal 'Hola Franco!', last_response.body + assert_equal 'Hola Frank!', last_response.body end def test_con_entorno_rack @@ -566,7 +563,6 @@ para micro-aplicaciones (por ejemplo, un único archivo de aplicación, los directorios ./public y ./views, logging, página con detalles de excepción, etc.). Ahí es donde Sinatra::Base entra en el juego: - require 'sinatra/base' class MiApp < Sinatra::Base @@ -656,8 +652,7 @@ Para actualizar el código fuente de Sinatra en el futuro: adicional, noticias, y enlaces a otros recursos. * {Contribuyendo}[http://www.sinatrarb.com/contributing] - ¿Encontraste un error?. ¿Necesitás ayuda?. ¿Tenés un parche?. -* {Lighthouse}[http://sinatra.lighthouseapp.com] - Seguimiento de problemas y - planeamiento de lanzamientos. +* {Issue tracker}[http://sinatra.lighthouseapp.com] * {Twitter}[http://twitter.com/sinatra] * {Lista de Correo}[http://groups.google.com/group/sinatrarb/topics] * {IRC: #sinatra}[irc://chat.freenode.net/#sinatra] en http://freenode.net