Alternativas a Rails para sitios y
   servicios web ultraligeros




            Raúl Murciano
         Conferencia Rails ...
github.com/raul/conferencia_rails_2009
Quién soy
●   Freelance: raul.murciano.net
●   Consultoría/Formación:
●   linkedin.com/in/raulmurciano


●   Comunidad: sp...
Background tecnología

●   Java → PHP → Ruby on Rails


●   Huyo de la complejidad


●   Me encanta el código expresivo y ...
I   Rails
Rails aporta muchas cosas
...pero no hay balas de plata
...pero no hay balas de plata
...pero no hay balas de plata
...pero no hay balas de plata
...pero no hay balas de plata
Rails Middleware / Metal
En el capítulo de ayer... “Rails 3:
performance & rack integration”
En el capítulo de ayer... “Rails 3:
performance & rack integration”




      What the f*ck is Rack?
Rack
Rack
   env: { 'PATH_INFO' => '/foo/bar', ... }
[ status_code, headers_hash, content ]
                                   ...
Rack: handlers
Rack: rutas
Rack: fltros
Rack: fltros
Rack: apilando fltros
Rack: seleccionando fltros
Rails   Rack
Rails Middleware

rake middleware muestra la pila de fltros
Rails Middleware
Rails Middleware
Rails Metal
Rails Metal
Ecosistema Rack
●   Rack::Utils: utilidades para frameworks
      escape_html, parse_query, …


●   Rack::Contrib: compone...
Sinatra
Sinatra
●   Micro framework, 1 ó 2 dependencias: rack,
    shotgun
●   Micro aplicaciones




●   Se ejecuta como un scrip...
Sinatra: parámetros en las rutas
Sinatra: parámetro splat
Sinatra: vistas inline
Sinatra: vistas infle
Sinatra: vistas separadas




       Raul Murciano, Conferencia Rails 2009
Sinatra: helpers
Sinatra: layout
Sinatra: partials
Sinatra: REST




PUT, DELETE _method
Params anidados
Sinatra: fltros




(Aplican a todos, no
hay :only ni :except)
Sinatra: confguración
Sinatra: gestión de errores
Sinatra   Rack
Sinatra: misc
●   Sesiones, cookies vía Rack::Session
    Gotchas ;)
    ●    no usa secret por defecto!
    ●    Si guard...
Sinatra: base
Sinatra: ejemplos
●   Taps: a simple database agnostic import/export app to
    transfer data to/from a remote database
● ...
Sinatra como Rails Metal
Rendimiento Rails Metal

Pratik Naik: 1-2ms de diferencia.
DHH:
●   “the difference is tiny for regular HTML-based web
   ...
Rendimiento Rails/Sinatra/Rack
tinyurl.com/ruby-web-performance
There are no silver bullets
There are no silver bullets

...so Use the Best Tool for the Job
Use the Best Tool for the Job

Generadores de contenido estático:
●   Jekyll: wiki.github.com/mojombo/jekyll
●   Nanoc: na...
Use the Best Tool for the Job
    En mi opinión...


●   Usar Rails middleware/metal por
    rendimiento sólo tiene sentid...
Use the Best Tool for the Job
    En mi opinión...


●   Rack es un protocolo perfecto, pero es
    demasiado áspero como ...
Use the Best Tool for the Job
    En mi opinión...
●   Sinatra != Spaghetti code
        github.com/raul/sinatra_template
...
Use the Best Tool for the Job
    En mi opinión...
●   Sinatra != Spaghetti code
        github.com/raul/sinatra_template
...
Sinatra
     Rails   Rack
everybody
Enlaces
●   Rack:
    rack.rubyforge.org
●   Sinatra:
    sinatrarb.com
●   Rails & Rack (Middleware/Metal):
    guides.ru...
Gracias! :)

            ¿Preguntas?


    github.com/raul/conferencia_rails_2009
          twitter.com/happywebcoder
work...
Alternativas a Rails para sitios y  servicios web ultraligeros
Upcoming SlideShare
Loading in...5
×

Alternativas a Rails para sitios y servicios web ultraligeros

2,071

Published on

Charla sobre Rack, Rails Metal y Sinatra como alternativas a Rails, presentada en la Conferencia Rails 2009

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,071
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Alternativas a Rails para sitios y servicios web ultraligeros

  1. 1. Alternativas a Rails para sitios y servicios web ultraligeros Raúl Murciano Conferencia Rails 2009
  2. 2. github.com/raul/conferencia_rails_2009
  3. 3. Quién soy ● Freelance: raul.murciano.net ● Consultoría/Formación: ● linkedin.com/in/raulmurciano ● Comunidad: spainrb.org - srug.org ● github.com/raul ● twitter.com/happywebcoder
  4. 4. Background tecnología ● Java → PHP → Ruby on Rails ● Huyo de la complejidad ● Me encanta el código expresivo y conciso
  5. 5. I Rails
  6. 6. Rails aporta muchas cosas
  7. 7. ...pero no hay balas de plata
  8. 8. ...pero no hay balas de plata
  9. 9. ...pero no hay balas de plata
  10. 10. ...pero no hay balas de plata
  11. 11. ...pero no hay balas de plata
  12. 12. Rails Middleware / Metal
  13. 13. En el capítulo de ayer... “Rails 3: performance & rack integration”
  14. 14. En el capítulo de ayer... “Rails 3: performance & rack integration” What the f*ck is Rack?
  15. 15. Rack
  16. 16. Rack env: { 'PATH_INFO' => '/foo/bar', ... } [ status_code, headers_hash, content ] call(env)
  17. 17. Rack: handlers
  18. 18. Rack: rutas
  19. 19. Rack: fltros
  20. 20. Rack: fltros
  21. 21. Rack: apilando fltros
  22. 22. Rack: seleccionando fltros
  23. 23. Rails Rack
  24. 24. Rails Middleware rake middleware muestra la pila de fltros
  25. 25. Rails Middleware
  26. 26. Rails Middleware
  27. 27. Rails Metal
  28. 28. Rails Metal
  29. 29. Ecosistema Rack ● Rack::Utils: utilidades para frameworks escape_html, parse_query, … ● Rack::Contrib: componentes Rack ETags, cookies, profling, … ● Rack::Test ● CodeRack.org
  30. 30. Sinatra
  31. 31. Sinatra ● Micro framework, 1 ó 2 dependencias: rack, shotgun ● Micro aplicaciones ● Se ejecuta como un script ruby más
  32. 32. Sinatra: parámetros en las rutas
  33. 33. Sinatra: parámetro splat
  34. 34. Sinatra: vistas inline
  35. 35. Sinatra: vistas infle
  36. 36. Sinatra: vistas separadas Raul Murciano, Conferencia Rails 2009
  37. 37. Sinatra: helpers
  38. 38. Sinatra: layout
  39. 39. Sinatra: partials
  40. 40. Sinatra: REST PUT, DELETE _method Params anidados
  41. 41. Sinatra: fltros (Aplican a todos, no hay :only ni :except)
  42. 42. Sinatra: confguración
  43. 43. Sinatra: gestión de errores
  44. 44. Sinatra Rack
  45. 45. Sinatra: misc ● Sesiones, cookies vía Rack::Session Gotchas ;) ● no usa secret por defecto! ● Si guardas un array has de deserializarlo a mano ● Cabeceras, redirecciones ● Archivos estáticos, /public ● Extensiones github.com/nesquena/sinatra_more/
  46. 46. Sinatra: base
  47. 47. Sinatra: ejemplos ● Taps: a simple database agnostic import/export app to transfer data to/from a remote database ● Integrity: easy and fun Continuous Integration server ● Panda: Video encoding made easy with AWS ● Hancock: Single Sign On Server ● Shrtr: a link shortener service ● TooPaste: pastie clone ● ...
  48. 48. Sinatra como Rails Metal
  49. 49. Rendimiento Rails Metal Pratik Naik: 1-2ms de diferencia. DHH: ● “the difference is tiny for regular HTML-based web application stuff”, ● “you shouldn’t jump to metal before Action Controller has proved itself to be too slow” tinyurl.com/perf-rails-metal
  50. 50. Rendimiento Rails/Sinatra/Rack tinyurl.com/ruby-web-performance
  51. 51. There are no silver bullets
  52. 52. There are no silver bullets ...so Use the Best Tool for the Job
  53. 53. Use the Best Tool for the Job Generadores de contenido estático: ● Jekyll: wiki.github.com/mojombo/jekyll ● Nanoc: nanoc.stoneship.org ● StaticMatic: staticmatic.rubyforge.org ● Webby: webby.rubyforge.org From Mike Gunderloy: gist.github.com/242751
  54. 54. Use the Best Tool for the Job En mi opinión... ● Usar Rails middleware/metal por rendimiento sólo tiene sentido en casos muy puntuales ● Rails middleware/metal es una buena alternativa a mod_rewrite y similar
  55. 55. Use the Best Tool for the Job En mi opinión... ● Rack es un protocolo perfecto, pero es demasiado áspero como framework ● Merece la pena echar un vistazo a Rack::Contrib, Rack::Utils y Rack::Test
  56. 56. Use the Best Tool for the Job En mi opinión... ● Sinatra != Spaghetti code github.com/raul/sinatra_template ● Sinatra es muy útil para: ● dar interfaz web a un servicio ya existente ● webservices a medida ● proyectos que se alejan mucho del stack Rails ● micro aplicaciones
  57. 57. Use the Best Tool for the Job En mi opinión... ● Sinatra != Spaghetti code github.com/raul/sinatra_template ● Sinatra es muy útil para: ● dar interfaz web a un servicio ya existente ● webservices a medida ● proyectos que se alejan mucho del stack Rails ● micro aplicaciones ¡¡¡divertirse!!!
  58. 58. Sinatra Rails Rack everybody
  59. 59. Enlaces ● Rack: rack.rubyforge.org ● Sinatra: sinatrarb.com ● Rails & Rack (Middleware/Metal): guides.rubyonrails.org/rails_on_rack.html
  60. 60. Gracias! :) ¿Preguntas? github.com/raul/conferencia_rails_2009 twitter.com/happywebcoder workingwithrails.com/person/5988-raul-murciano
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×