SlideShare una empresa de Scribd logo
1 de 61
Descargar para leer sin conexión
Alternativas a Rails para sitios y
   servicios web ultraligeros




            Raúl Murciano
         Conferencia Rails 2009
github.com/raul/conferencia_rails_2009
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
Background tecnología

●   Java → PHP → Ruby on Rails


●   Huyo de la complejidad


●   Me encanta el código expresivo y conciso
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 ]
                                             call(env)
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: componentes Rack
      ETags, cookies, profling, …


●   Rack::Test


●   CodeRack.org
Sinatra
Sinatra
●   Micro framework, 1 ó 2 dependencias: rack,
    shotgun
●   Micro aplicaciones




●   Se ejecuta como un script ruby más
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 guardas un array has de deserializarlo a mano
●   Cabeceras, redirecciones
●   Archivos estáticos, /public
●   Extensiones
        github.com/nesquena/sinatra_more/
Sinatra: base
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
●   ...
Sinatra como Rails Metal
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
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: 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
    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
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
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
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!!!
Sinatra
     Rails   Rack
everybody
Enlaces
●   Rack:
    rack.rubyforge.org
●   Sinatra:
    sinatrarb.com
●   Rails & Rack (Middleware/Metal):
    guides.rubyonrails.org/rails_on_rack.html
Gracias! :)

            ¿Preguntas?


    github.com/raul/conferencia_rails_2009
          twitter.com/happywebcoder
workingwithrails.com/person/5988-raul-murciano

Más contenido relacionado

Destacado

Community And Service
Community And ServiceCommunity And Service
Community And Service
Mimii
 

Destacado (8)

Power Colores En El Viento
Power Colores En El VientoPower Colores En El Viento
Power Colores En El Viento
 
0903 Ayethadis
0903 Ayethadis0903 Ayethadis
0903 Ayethadis
 
I Miei Paciughi1
I Miei Paciughi1I Miei Paciughi1
I Miei Paciughi1
 
Presentatie Tassen
Presentatie TassenPresentatie Tassen
Presentatie Tassen
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
VoiceThread final presentation
VoiceThread final presentationVoiceThread final presentation
VoiceThread final presentation
 
Community And Service
Community And ServiceCommunity And Service
Community And Service
 
Kutlu Dogum Haftasi
Kutlu Dogum HaftasiKutlu Dogum Haftasi
Kutlu Dogum Haftasi
 

Similar a Alternativas a Rails para sitios y servicios web ultraligeros

Ruby On Rails Jun2009
Ruby On Rails Jun2009Ruby On Rails Jun2009
Ruby On Rails Jun2009
Sergio Alonso
 

Similar a Alternativas a Rails para sitios y servicios web ultraligeros (20)

Descifrando Ruby on Rails
Descifrando Ruby on RailsDescifrando Ruby on Rails
Descifrando Ruby on Rails
 
Ruby on Rails & TDD con RSpec
Ruby on Rails & TDD con RSpecRuby on Rails & TDD con RSpec
Ruby on Rails & TDD con RSpec
 
LaCoctelera.com y The Shaker - Conferencia Rails Hispana 2006
LaCoctelera.com y The Shaker - Conferencia Rails Hispana 2006LaCoctelera.com y The Shaker - Conferencia Rails Hispana 2006
LaCoctelera.com y The Shaker - Conferencia Rails Hispana 2006
 
Ruby on Rails - ETyC 2011
Ruby on Rails - ETyC 2011Ruby on Rails - ETyC 2011
Ruby on Rails - ETyC 2011
 
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptx
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptxLo que tienes que saber de Dart para Backend, frontend y Mobile..pptx
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptx
 
Codemotion Madrid 2019 - ¡GraalVM y Micronaut: compañeros perfectos!
Codemotion Madrid 2019 - ¡GraalVM y Micronaut: compañeros perfectos!Codemotion Madrid 2019 - ¡GraalVM y Micronaut: compañeros perfectos!
Codemotion Madrid 2019 - ¡GraalVM y Micronaut: compañeros perfectos!
 
Web framework ligeros y micros en java barcamp 2014
Web framework ligeros y micros en java   barcamp 2014Web framework ligeros y micros en java   barcamp 2014
Web framework ligeros y micros en java barcamp 2014
 
Rails 101
Rails 101Rails 101
Rails 101
 
Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020
 
Introducción a RubyOnRails
Introducción a RubyOnRailsIntroducción a RubyOnRails
Introducción a RubyOnRails
 
Ruby On Rails Jun2009
Ruby On Rails Jun2009Ruby On Rails Jun2009
Ruby On Rails Jun2009
 
Scala desde c# y JavaScript
Scala desde c# y JavaScriptScala desde c# y JavaScript
Scala desde c# y JavaScript
 
Web automation para developers
Web automation para developersWeb automation para developers
Web automation para developers
 
Bases de Datos NoSQL - Riak
Bases de Datos NoSQL - Riak Bases de Datos NoSQL - Riak
Bases de Datos NoSQL - Riak
 
.NET Memoria y Rendimiento
.NET Memoria y Rendimiento.NET Memoria y Rendimiento
.NET Memoria y Rendimiento
 
Python django
Python djangoPython django
Python django
 
Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013
 
Ruby on the Rails
Ruby on the RailsRuby on the Rails
Ruby on the Rails
 
Node para Javeros: Conoce a tu enemigo
Node para Javeros: Conoce a tu enemigoNode para Javeros: Conoce a tu enemigo
Node para Javeros: Conoce a tu enemigo
 
Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009
 

Último

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Último (12)

EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 

Alternativas a Rails para sitios y servicios web ultraligeros