Your SlideShare is downloading. ×
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
RubyOnRails: Con qué se come eso?
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

RubyOnRails: Con qué se come eso?

512

Published on

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

No Downloads
Views
Total Views
512
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
21
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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. ¿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. ¿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. 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. 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. 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. 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. 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. El Patrón MVCEl Patrón MVC B. D. Navegador Vista Modelo Controlador
  • 10. MVC sobre RielesMVC sobre Rieles
  • 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. 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. 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. 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. 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. 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. Las solicitudesLas solicitudes
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. Y???Y??? Con qué se come esto?Con qué se come esto?
  • 28. alumno profesor *[n] : responder(pregunta) respuesta asistente expositor Preguntas?Preguntas?
  • 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. 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. 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. 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. 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/

×