Está en la página 1de 39

Desarrollo web con Ruby on Rails 3

Introduccin a Ruby on Rails

ncor Gonzlez Sosa

Imobach Gonzlez Sosa

Banot.net http://www.banot.net/

Octubre de 2010

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

1 / 28

Contenidos

Antes de entrar en materia Aspectos de Ruby a tener en cuenta Rails 3

Introduccin Principios MVC Primer ejemplo completo

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

2 / 28

Contenidos

Antes de entrar en materia Aspectos de Ruby a tener en cuenta Rails 3

Introduccin Principios MVC Primer ejemplo completo

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

3 / 28

Aspectos de Ruby a tener en cuenta

Lenguaje dinmico (ruby way) Mtodos de clase frente a mtodos de instancia Smbolos Asociativos (Hash) y parmetros por nombre

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

4 / 28

Aspectos de Ruby a tener en cuenta

Lenguaje dinmico (ruby way) Mtodos de clase frente a mtodos de instancia Smbolos Asociativos (Hash) y parmetros por nombre

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

4 / 28

Aspectos de Ruby a tener en cuenta

Lenguaje dinmico (ruby way) Mtodos de clase frente a mtodos de instancia Smbolos Asociativos (Hash) y parmetros por nombre

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

4 / 28

Aspectos de Ruby a tener en cuenta

Lenguaje dinmico (ruby way) Mtodos de clase frente a mtodos de instancia Smbolos Asociativos (Hash) y parmetros por nombre

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

4 / 28

Contenidos

Antes de entrar en materia Aspectos de Ruby a tener en cuenta Rails 3

Introduccin Principios MVC Primer ejemplo completo

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

5 / 28

Rails 3
Merb 1 + Rails 2 = Rails 3 Lanzamiento muy reciente Profunda reestructuracin y muchos cambios Arquitectura ms modular Agnosticismo (ORM, framework javascript, vistas. . . ) Javascript no intrusivo (aprovechando HTML 5) Mejor enrutado de peticiones (incluso entre diferentes aplicaciones/frameworks) Gestin de dependencias (Bundler) Espectacular mejora de rendimiento

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

6 / 28

Contenidos

Antes de entrar en materia Aspectos de Ruby a tener en cuenta Rails 3

Introduccin Principios MVC Primer ejemplo completo

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

7 / 28

Qu es Ruby on Rails?

Plataforma para desarrollo de aplicaciones web Desarrollado por David Heinemeier Hansson, Dinamarca Extrado de un proyecto real (Basecamp, de 37signals) Facilita el desarrollo, despliegue y mantenimiento De bajo nivel pero cercano al dominio del problema Basado en prcticas giles de desarrollo

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

8 / 28

Por qu es especial?
Dont repeat yourself

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

9 / 28

Por qu es especial?
Dont repeat yourself

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

10 / 28

Por qu es especial?
Convencin frente a conguracin

class Event < ActiveRecord::Base set_table_name "event" set_primary_key "identifier" has_and_belongs_to_many :assistants, :class_name => "People", :join_table => "assist", :foreign_key => "event" end

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

11 / 28

Por qu es especial?
Convencin frente a conguracin

class Events < ActiveRecord::Base has_and_belongs_to_many :assistants end

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

12 / 28

Dnde est el IDE?


"If youre coming to Ruby and Rails from languages such as C# and Java, you may be wondering about IDEs. After all, we all know that its impossible to code modern applications without at least 100MB of IDE supporting our every keystroke. For you enlightened ones, heres the point in the book where we recommend you sit down, ideally propped up on each side by a pile of framework references and 1,000 page Made Easy books." There are no fully-edged IDEs for Ruby or Rails. Instead, we all use plain old editors. And it turns out that this isnt as much of a problem as you might think. Dave Thomas

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

13 / 28

Contenidos

Antes de entrar en materia Aspectos de Ruby a tener en cuenta Rails 3

Introduccin Principios MVC Primer ejemplo completo

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

14 / 28

MVC a grandes rasgos

Modelo, Vista y Controlador Modelo para los datos Vista para la interfaz (HTML en este caso) Controlador para De invencin bastante reciente Muy popular actualmente para plataformas de desarrollo web

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

15 / 28

MVC a grandes rasgos

Modelo, Vista y Controlador Modelo para los datos Vista para la interfaz (HTML en este caso) Controlador para De invencin bastante reciente Muy popular actualmente para plataformas de desarrollo web

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

15 / 28

MVC a grandes rasgos

Modelo, Vista y Controlador Modelo para los datos Vista para la interfaz (HTML en este caso) Controlador para De invencin bastante reciente Muy popular actualmente para plataformas de desarrollo web

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

15 / 28

MVC a grandes rasgos

Modelo, Vista y Controlador Modelo para los datos Vista para la interfaz (HTML en este caso) Controlador para De invencin bastante reciente Muy popular actualmente para plataformas de desarrollo web

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

15 / 28

MVC a grandes rasgos

Modelo, Vista y Controlador Modelo para los datos Vista para la interfaz (HTML en este caso) Controlador para atraerlos a todos y atarlos a las... errhhh De invencin bastante reciente Muy popular actualmente para plataformas de desarrollo web

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

15 / 28

MVC a grandes rasgos

Modelo, Vista y Controlador Modelo para los datos Vista para la interfaz (HTML en este caso) Controlador para hacer clculos y unir todas las piezas De invencin bastante reciente Muy popular actualmente para plataformas de desarrollo web

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

15 / 28

MVC a grandes rasgos

Modelo, Vista y Controlador Modelo para los datos Vista para la interfaz (HTML en este caso) Controlador para hacer clculos y unir todas las piezas De invencin bastante reciente Muy popular actualmente para plataformas de desarrollo web

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

15 / 28

MVC a grandes rasgos

Modelo, Vista y Controlador Modelo para los datos Vista para la interfaz (HTML en este caso) Controlador para hacer clculos y unir todas las piezas De invencin bastante reciente (1979) Muy popular actualmente para plataformas de desarrollo web

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

15 / 28

MVC a grandes rasgos

Modelo, Vista y Controlador Modelo para los datos Vista para la interfaz (HTML en este caso) Controlador para hacer clculos y unir todas las piezas De invencin bastante reciente (1979) Muy popular actualmente para plataformas de desarrollo web

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

15 / 28

Modelo
Acceso a los datos de la aplicacin y reglas para manipularlos Mdulo genrico ActiveModel Modelos almacenados en BBDD relacionales ORM mdulo ActiveRecord Una clase representa una tabla Se descubren automticamente los campos... ...y la tabla (Alumno alumnos) Se pueden declarar relaciones con otros modelos/tablas Se puede personalizar y aadir mtodos

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

16 / 28

Vista

Para decidir el aspecto Mdulo: ActionView Plantillas en formato Embedded Ruby (por defecto) HTML con Ruby embebido Una por cada accin de cada controlador Corolario: dependen de los controladores HTML repetitivo, a funciones externas (helpers)

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

17 / 28

Controlador

Bisagra del MVC y lgica de clculos Mdulo: ActionPack Cada controlador, una clase de Ruby Cada mtodo, una accin Andamios (scaffold) para avanzar ms rpido

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

18 / 28

Arquitectura MVC en una aplicacin web

1 2 3 4

El navegador enva una peticin El controlador interacta con los modelos Los controladores invocan a las vistas La vista dibuja la siguiente pgina para el navegador

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

19 / 28

Contenidos

Antes de entrar en materia Aspectos de Ruby a tener en cuenta Rails 3

Introduccin Principios MVC Primer ejemplo completo

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

20 / 28

Creando una aplicacin nueva

rails new nombre_aplicacion [opciones] Genera el esqueleto de una aplicacin Rails

Opciones destacables
database template ruby skip-proyotype, skip-active-record, skip-test-units skip-git

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

21 / 28

Estructura de directorios y cheros

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

22 / 28

Estructura de directorios y cheros

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

23 / 28

La orden rails
new crea una nueva aplicacin generate genera cdigo (modelos, recursos, pruebas. . . ) destroy elimina cdigo (lo opuesto a generate) server servidor simple (para desarrollo) console consola interactiva dbconsole consola de la base de datos plugin instala un plugin runner ejecuta trozos de Ruby (en nuestra aplicacin) benchmarker para comprobar el rendimiento prole informacin de proling

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

24 / 28

Arquitectura MVC en Rails (1 y 2)

1 2

El navegador enva una peticin El cdigo de enrutado decide en qu controlador delegarla (o enviarla a otra aplicacin, o. . . ) El controlador interacta con los modelos Los controladores invocan a las vistas La vista dibuja la siguiente pgina para el navegador
Desarrollo web con Ruby on Rails 3 Octubre de 2010 25 / 28

3 4 5

ncor/Imobach GS (Banot.net)

Componentes de Rails 3
Action Pack Gema que contiene tres componentes Action Controller parmetros HTTP, sesiones, redirecciones. . . Action View genera HTML o XML a partir de plantillas Action Dispatch enruta las peticiones dentro de la aplicacin o a otra aplicacin Rack Action Mailer para enviar y recibir correos electrnicos Active Model interfaz entre Action Pack y la capa de persistencia Active Record ORM, base de los modelos Active Resource permite utilizar recursos REST como objetos locales Active Support clases tiles y extensiones a las de Ruby Railties para crear aplicaciones y unir los dems componentes

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

26 / 28

Hola mundo: resumen (I)

Crear aplicacin rails new demo Ejecutarla rails server Crear controlador Saludos rails generate controller saludos

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

27 / 28

Hola mundo: resumen (II)

Implementar la accin hola en app/controllers/saludos_controller.rb Denir una ruta para nuestra accin en config/routes.rb Crear la plantilla para nuestra accin en app/views/saludos/hola.html.erb Crear accin adios Enlazar nuestras acciones usando el helper link_to en nuestras plantillas

ncor/Imobach GS (Banot.net)

Desarrollo web con Ruby on Rails 3

Octubre de 2010

28 / 28

También podría gustarte