RubyOnRails: Con qué se come eso?

724 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
724
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
21
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

RubyOnRails: Con qué se come eso?

  1. 1. Ruby on Rails:Ruby on Rails: ¿Con qué se come eso?¿Con qué se come eso? Gabriel E. Arellano Grupo de Estudios de Software Libre / Grupo de Estudios de UML U.T.N. - F.R. Concepción del Uruguay Sextas Jornadas Regionales de Software Libre Mendoza - Argentina
  2. 2. ¿De qué hablaremos?¿De qué hablaremos? ● Presentación del FrameworkPresentación del Framework ● Por qué Ruby?Por qué Ruby? ● Filosofía de Ruby on RailsFilosofía de Ruby on Rails ● Descripción del FrameworkDescripción del Framework ● Qué necesito para usarlo?Qué necesito para usarlo? ● Cuándo usarlo y cuándo no...Cuándo usarlo y cuándo no...
  3. 3. ¿Qué es Ruby on Rails?¿Qué es Ruby on Rails? Un framework de aplicaciones web que:Un framework de aplicaciones web que: ● Está escrito en Ruby.Está escrito en Ruby. ● Basado en patrones de diseño:Basado en patrones de diseño: ● MVC (Modelo-Vista-Controlador)MVC (Modelo-Vista-Controlador) ● Active Record, Single Table Inheritance.Active Record, Single Table Inheritance. ● Brinda abstracción de objetos persistentes.Brinda abstracción de objetos persistentes. ● Pensado para el desarrollo ágil y RUP.Pensado para el desarrollo ágil y RUP. ● Fomenta las buenas prácticas de diseño eFomenta las buenas prácticas de diseño e implementación.implementación.
  4. 4. El lenguaje RubyEl lenguaje Ruby Un lenguaje de programación que:Un lenguaje de programación que: ● Es orientado a objetos (puro).Es orientado a objetos (puro). ● Soporta reflexión y metaprogramación.Soporta reflexión y metaprogramación. ● Tiene gran claridad semántica.Tiene gran claridad semántica. ● Es fácilmente extensible y OpenEs fácilmente extensible y Open Source.Source. ● Es dinámico e interpretado.Es dinámico e interpretado. ● Fue creado en Japón en 1995, y en 5 añosFue creado en Japón en 1995, y en 5 años desplazó adesplazó a Python.Python.
  5. 5. El lenguaje RubyEl lenguaje Ruby class Numericclass Numeric def mas(x)def mas(x) self.+(x)self.+(x) endend endend y = 5.mas(6)y = 5.mas(6) y = 3 + by = 3 + b class Numericclass Numeric def mas xdef mas x self + xself + x endend endend y = 5.mas 6y = 5.mas 6
  6. 6. El lenguaje RubyEl lenguaje Ruby search_engines =search_engines = %w[Google Yahoo MSN].map do |engine|%w[Google Yahoo MSN].map do |engine| "http://www." + engine.downcase + ".com""http://www." + engine.downcase + ".com" endend 5.times { print "Ruby es Excelente!" }5.times { print "Ruby es Excelente!" }
  7. 7. Filosofía del Framework RoRFilosofía del Framework RoR Fundamentos de Ruby on Rails:Fundamentos de Ruby on Rails: ● DRY (Don't Repeat Yourself).DRY (Don't Repeat Yourself). ● Convención sobre configuración.Convención sobre configuración. ● Uso de patrones de diseño.Uso de patrones de diseño. ● Generación de código (helpers).Generación de código (helpers). ● Menos código, menos errores.Menos código, menos errores. ● Test integrados (unitarios y funcionales).Test integrados (unitarios y funcionales).
  8. 8. El Patrón MVCEl Patrón MVC La aplicación se divide en tres partes:La aplicación se divide en tres partes: ● ModeloModelo Responsable de mantener el “estado” de la aplicación.Responsable de mantener el “estado” de la aplicación. ● VistaVista Responsable de presentar la interfaz y la información alResponsable de presentar la interfaz y la información al usuariousuario ● ControladorControlador Organiza la aplicación. Recibe eventos del exterior,Organiza la aplicación. Recibe eventos del exterior, interactúa con el modelo y actualiza la información deinteractúa con el modelo y actualiza la información de las vistas.las vistas.
  9. 9. El Patrón MVCEl Patrón MVC B. D. Navegador Vista Modelo Controlador
  10. 10. MVC sobre RielesMVC sobre Rieles
  11. 11. Los ModelosLos Modelos Los modelos en Ruby on Rails:Los modelos en Ruby on Rails: ● Emplean el patrón Active Record.Emplean el patrón Active Record. ● Representados por clases que heredan deRepresentados por clases que heredan de la superclase ActiveRecord::Base.la superclase ActiveRecord::Base. ● Encapsulan la lógica de persistencia.Encapsulan la lógica de persistencia. ● Contienen reglas de negocios.Contienen reglas de negocios. ● No incluyen propiedades.No incluyen propiedades. ● Contienen relaciones con otros modelos.Contienen relaciones con otros modelos.
  12. 12. El Patrón Active RecordEl Patrón Active Record Reglas muuuuuy simples:Reglas muuuuuy simples: ● Una clase -> Una tabla. (Pluralización)Una clase -> Una tabla. (Pluralización) ● Un atributo -> Una columna.Un atributo -> Una columna. ● Una instancia -> Una tupla (renglón).Una instancia -> Una tupla (renglón). ● Relaciones:Relaciones: ““tiene un”tiene un” -> clave foránea.-> clave foránea. ““pertenece a”pertenece a” -> clave foránea.-> clave foránea. ““tiene muchos”tiene muchos” -> clave en la otra tabla-> clave en la otra tabla ““muchos a muchos” -> tabla intermedia.muchos a muchos” -> tabla intermedia.
  13. 13. Active Record en RoRActive Record en RoR Nos proporciona:Nos proporciona: ● MétodosMétodos find()find() y operaciones CRUD.y operaciones CRUD. ● Relaciones.Relaciones. ● Agregación, Herencia de Tabla Simple.Agregación, Herencia de Tabla Simple. ● Transacciones.Transacciones. ● Validaciones y Callbacks.Validaciones y Callbacks. ● Act as.Act as.
  14. 14. ValidacionesValidaciones Permiten agregar restricciones de dominio yPermiten agregar restricciones de dominio y lógica de negocios en el modelo:lógica de negocios en el modelo: ● MétodosMétodos validatevalidate yy validate_on_*validate_on_* ● Validation Helpers:Validation Helpers: Unicidad, presencia, ausencia.Unicidad, presencia, ausencia. Formato (expr. Regulares).Formato (expr. Regulares). Longitud, inclusión, exclusión.Longitud, inclusión, exclusión. Objetos relacionados.Objetos relacionados.
  15. 15. CallbacksCallbacks Permiten disparar lógica antes o después dePermiten disparar lógica antes o después de una modificación del estado del objeto:una modificación del estado del objeto: ● Antes/Después de su creación (.save)Antes/Después de su creación (.save) ● Antes/Después de su actualización (.update)Antes/Después de su actualización (.update) ● Antes/Después de su eliminación (.destroy)Antes/Después de su eliminación (.destroy)
  16. 16. Pero... y SQL?Pero... y SQL? (Larga vida a las Migrations)(Larga vida a las Migrations) Las migrations son archivos que permitenLas migrations son archivos que permiten alterar y versionar el esquema de la base dealterar y versionar el esquema de la base de datos del proyecto.datos del proyecto. ● Están escritas en Ruby.Están escritas en Ruby. ● Se generan automágicamente.Se generan automágicamente. ● Brindan independencia total del DBMS.Brindan independencia total del DBMS. ● Permiten avanzar o retroceder en versiones.Permiten avanzar o retroceder en versiones.
  17. 17. Las solicitudesLas solicitudes
  18. 18. Las solicitudesLas solicitudes Ejemplo de solicitudEjemplo de solicitud http://localhost:3000/blog/display/5http://localhost:3000/blog/display/5 ● blogblog se traduce a la clase BlogControllerse traduce a la clase BlogController ● showshow se traduce al método showse traduce al método show ● 55 se traduce al valor dese traduce al valor de params[:id]params[:id]
  19. 19. TemplatesTemplates Para qué otro lenguaje de templates?Para qué otro lenguaje de templates? Enfoque extremadamente pragmático:Enfoque extremadamente pragmático: ● Archivos (X)HTML con trozos (snippets)Archivos (X)HTML con trozos (snippets) de código Ruby embebidode código Ruby embebido ● Las vistas comparten el espacio deLas vistas comparten el espacio de variables de su controlador.variables de su controlador. ● Helpers HTML, XML y AJAX.Helpers HTML, XML y AJAX. ● Funcionalidades de Layout y Partials.Funcionalidades de Layout y Partials.
  20. 20. HelpersHelpers xhtml, xml, javascript... sin escribir ni unaxhtml, xml, javascript... sin escribir ni una línea de xhtml, xml o javascript.línea de xhtml, xml o javascript. Permiten la generación de código xhtml, xmlPermiten la generación de código xhtml, xml y javascript a partir de código Ruby:y javascript a partir de código Ruby: <p> <%= link_to “Eliminar”, { :action => “delete”, :id => @actual }, :confirm => “Está seguro?” %> </p>
  21. 21. Colgados del AndamioColgados del Andamio Scaffolds y el desarrollo de prototiposScaffolds y el desarrollo de prototipos Los scaffolds son archivos generados auto-Los scaffolds son archivos generados auto- mágicamente por Rails para un modelo enmágicamente por Rails para un modelo en particular y que brindan:particular y que brindan: ● Controladores, vistas y helpers necesariosControladores, vistas y helpers necesarios para el ABM y listado del mismo.para el ABM y listado del mismo. Lo que NO brindan:Lo que NO brindan: ● Soporte a Relaciones.Soporte a Relaciones. ● Actualización ante cambios en el modelo.Actualización ante cambios en el modelo.
  22. 22. Quiero Rails funcionando ya!Quiero Rails funcionando ya! ● Instalación TradicionalInstalación Tradicional ● Ruby on Rails en 2'Ruby on Rails en 2' ● XAMPP + AxleGrease (ex ROROX)XAMPP + AxleGrease (ex ROROX) ● InstantRailsInstantRails
  23. 23. Entornos de DesarrolloEntornos de Desarrollo (No tengo una Mac ni presupuesto para comprar el TextMate!)(No tengo una Mac ni presupuesto para comprar el TextMate!) ● RADRailsRADRails ● Ride - MeRide - Me ● Emacs + Rails Mode + mil y un agregadosEmacs + Rails Mode + mil y un agregados (a.k.a. The Hacker's Way)(a.k.a. The Hacker's Way) ● Vim + snippetsEmuVim + snippetsEmu
  24. 24. Entornos de EjecuciónEntornos de Ejecución ● WebBrickWebBrick ● LighttpdLighttpd, Apache CGI/FastCGI, Apache CGI/FastCGI ● MongrelMongrel Escalando Rails?Escalando Rails? Clusters Mongrel.Clusters Mongrel. Capistrano.Capistrano.
  25. 25. Cuándo usar Rails?Cuándo usar Rails? ● Cuando esté cómodo con el Framework.Cuando esté cómodo con el Framework. ● Con equipos ágiles y dinámicos.Con equipos ágiles y dinámicos. ● Cuando tengo pocos desarrolladores.Cuando tengo pocos desarrolladores. ● Con proyectos de pequeños o medianos.Con proyectos de pequeños o medianos.
  26. 26. Cuándo NO usar Rails?Cuándo NO usar Rails? ● Aplicaciones muy grandes.Aplicaciones muy grandes. ● Con bases de datos legadas.Con bases de datos legadas. ● Con desarrolladores “mediocres” o pocoCon desarrolladores “mediocres” o poco habituados a los cambios.habituados a los cambios. ● Con equipos de desarrollo muy grandes.Con equipos de desarrollo muy grandes.
  27. 27. Y???Y??? Con qué se come esto?Con qué se come esto?
  28. 28. alumno profesor *[n] : responder(pregunta) respuesta asistente expositor Preguntas?Preguntas?
  29. 29. Lecturas RecomendadasLecturas Recomendadas ““Cuatro días con Rails”Cuatro días con Rails” http://rails.homelinux.org/http://rails.homelinux.org/ ““Ruby for Rails: Ruby techniques for rails developers”Ruby for Rails: Ruby techniques for rails developers” David A. Black. - Ed. Manning (2006)David A. Black. - Ed. Manning (2006) ““Agile Web Development with Rails”Agile Web Development with Rails” Dave Thomas / David Heinemeier Hansson - Ed. The Pragmatic Programmers (2005)Dave Thomas / David Heinemeier Hansson - Ed. The Pragmatic Programmers (2005)
  30. 30. Lecturas RecomendadasLecturas Recomendadas ““Rails Recipes”Rails Recipes” Chad Fowler - Ed. The Pragmatic Programmers (2006)Chad Fowler - Ed. The Pragmatic Programmers (2006) ““Programming Ruby” (2da.Programming Ruby” (2da. EdiciónEdición)) Dave Thomas - Ed. The Pragmatic Programmers (2005)Dave Thomas - Ed. The Pragmatic Programmers (2005) http://www.rubycentral.com/book/http://www.rubycentral.com/book/ http://pickaxe.ruby.org.es/http://pickaxe.ruby.org.es/
  31. 31. Recursos On-LineRecursos On-Line Sitios fundamentalesSitios fundamentales http://www.rubyonrails.org.es/http://www.rubyonrails.org.es/ http://api.rubyonrails.org/http://api.rubyonrails.org/ Foros y Listas de correoForos y Listas de correo Rails-ES:Rails-ES: http://www.ruby-forum.com/forum/22http://www.ruby-forum.com/forum/22 Ruby Argentina:Ruby Argentina: http://rubyargentina.soveran.com/signuphttp://rubyargentina.soveran.com/signup
  32. 32. Recursos On-LineRecursos On-Line DivulgaciónDivulgación http://www.rubycorner.com/http://www.rubycorner.com/ http://www.rubycorner.com/blogs/lang/eshttp://www.rubycorner.com/blogs/lang/es (Sólo en español)(Sólo en español) http://www.sobrerailes.com/http://www.sobrerailes.com/ http://onrails.com.ar/http://onrails.com.ar/ http://rubyargentina.soveran.com/http://rubyargentina.soveran.com/ http://www.planetarails.es/http://www.planetarails.es/
  33. 33. Gracias!Gracias! (2006) Gabriel E. Arellano Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back- Cover Texts. The GNU Free Documentation License as applicable to this document can be found at: http://www.gnu.org/copyleft/fdl.html http://www.gabriel-arellano.com.ar/charlas/

×