Alternativas a Rails para sitios y servicios web ultraligeros
-
Upload
happywebcoder -
Category
Technology
-
view
1.992 -
download
0
description
Transcript of Alternativas a Rails para sitios y servicios web ultraligeros
![Page 1: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/1.jpg)
Alternativas a Rails para sitios y servicios web ultraligeros
Raúl Murciano Conferencia Rails 2009
![Page 2: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/2.jpg)
github.com/raul/conferencia_rails_2009
![Page 3: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/3.jpg)
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
![Page 4: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/4.jpg)
Background tecnología
● Java → PHP → Ruby on Rails
● Huyo de la complejidad
● Me encanta el código expresivo y conciso
![Page 5: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/5.jpg)
I Rails
![Page 6: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/6.jpg)
Rails aporta muchas cosas
![Page 7: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/7.jpg)
...pero no hay balas de plata
![Page 8: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/8.jpg)
...pero no hay balas de plata
![Page 9: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/9.jpg)
...pero no hay balas de plata
![Page 10: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/10.jpg)
...pero no hay balas de plata
![Page 11: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/11.jpg)
...pero no hay balas de plata
![Page 12: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/12.jpg)
Rails Middleware / Metal
![Page 13: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/13.jpg)
En el capítulo de ayer... “Rails 3: performance & rack integration”
![Page 14: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/14.jpg)
En el capítulo de ayer... “Rails 3: performance & rack integration”
What the f*ck is Rack?
![Page 15: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/15.jpg)
![Page 16: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/16.jpg)
Rack
![Page 17: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/17.jpg)
Rackenv: { 'PATH_INFO' => '/foo/bar', ... }
[ status_code, headers_hash, content ] call(env)
![Page 18: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/18.jpg)
Rack: handlers
![Page 19: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/19.jpg)
Rack: rutas
![Page 20: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/20.jpg)
Rack: fltros
![Page 21: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/21.jpg)
Rack: fltros
![Page 22: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/22.jpg)
Rack: apilando fltros
![Page 23: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/23.jpg)
Rack: seleccionando fltros
![Page 24: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/24.jpg)
Rails Rack
![Page 25: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/25.jpg)
Rails Middleware
rake middleware muestra la pila de fltros
![Page 26: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/26.jpg)
Rails Middleware
![Page 27: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/27.jpg)
Rails Middleware
![Page 28: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/28.jpg)
Rails Metal
![Page 29: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/29.jpg)
Rails Metal
![Page 30: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/30.jpg)
Ecosistema Rack
● Rack::Utils: utilidades para frameworksescape_html, parse_query, …
● Rack::Contrib: componentes RackETags, cookies, profling, …
● Rack::Test
● CodeRack.org
![Page 31: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/31.jpg)
Sinatra
![Page 32: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/32.jpg)
Sinatra
● Micro framework, 1 ó 2 dependencias: rack, shotgun
● Micro aplicaciones
● Se ejecuta como un script ruby más
![Page 33: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/33.jpg)
Sinatra: parámetros en las rutas
![Page 34: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/34.jpg)
Sinatra: parámetro splat
![Page 35: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/35.jpg)
Sinatra: vistas inline
![Page 36: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/36.jpg)
Sinatra: vistas infle
![Page 37: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/37.jpg)
Raul Murciano, Conferencia Rails 2009
Sinatra: vistas separadas
![Page 38: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/38.jpg)
Sinatra: helpers
![Page 39: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/39.jpg)
Sinatra: layout
![Page 40: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/40.jpg)
Sinatra: partials
![Page 41: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/41.jpg)
Sinatra: REST
Params anidadosPUT, DELETE _method
![Page 42: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/42.jpg)
Sinatra: fltros
(Aplican a todos, no hay :only ni :except)
![Page 43: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/43.jpg)
Sinatra: confguración
![Page 44: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/44.jpg)
Sinatra: gestión de errores
![Page 45: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/45.jpg)
Sinatra Rack
![Page 46: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/46.jpg)
Sinatra: misc
● Sesiones, cookies vía Rack::SessionGotchas ;)
● 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/
![Page 47: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/47.jpg)
Sinatra: base
![Page 48: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/48.jpg)
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
● ...
![Page 49: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/49.jpg)
Sinatra como Rails Metal
![Page 50: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/50.jpg)
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
![Page 51: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/51.jpg)
Rendimiento Rails/Sinatra/Rack
tinyurl.com/ruby-web-performance
![Page 52: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/52.jpg)
There are no silver bullets
![Page 53: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/53.jpg)
There are no silver bullets
...so Use the Best Tool for the Job
![Page 54: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/54.jpg)
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
Use the Best Tool for the Job
![Page 55: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/55.jpg)
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
![Page 56: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/56.jpg)
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
![Page 57: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/57.jpg)
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
![Page 58: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/58.jpg)
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!!!
![Page 59: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/59.jpg)
SinatraRails Rack
everybody
![Page 60: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/60.jpg)
Enlaces
● Rack:
rack.rubyforge.org● Sinatra:
sinatrarb.com● Rails & Rack (Middleware/Metal):
guides.rubyonrails.org/rails_on_rack.html
![Page 61: Alternativas a Rails para sitios y servicios web ultraligeros](https://reader033.fdocuments.us/reader033/viewer/2022051412/54b7b88d4a7959bf688b4799/html5/thumbnails/61.jpg)
Gracias! :)
¿Preguntas?
github.com/raul/conferencia_rails_2009twitter.com/happywebcoder
workingwithrails.com/person/5988-raul-murciano