Ruby on Rails - Desarrollo web que no duele - ftp - UC3M

Ruby y Rails. Ruby. • Creado por YUKIHIRO MATSUMOTO en los 90. • Interpretado. • Dinámico. • Completamente orientado a objetos. • Mola =;-) ...
688KB Größe 7 Downloads 77 vistas
1 Ruby y Rails

Ruby Ruby on Rails La ‘filosof´ıa’ de RoR

1 Ruby y Rails

Ruby Ruby on Rails La ‘filosof´ıa’ de RoR 2 Trabajar con RoR

Estructura de directorios ActiveRecord: manejo de datos en RoR ´ El ciclo de una peticion Cursos del GUL on Rails

1 Ruby y Rails

Ruby Ruby on Rails La ‘filosof´ıa’ de RoR 2 Trabajar con RoR

Estructura de directorios ActiveRecord: manejo de datos en RoR ´ El ciclo de una peticion Cursos del GUL on Rails ´ 3 Por donde seguir

Ruby y Rails 1 Ruby y Rails

Ruby Ruby on Rails La ‘filosof´ıa’ de RoR 2 Trabajar con RoR

Estructura de directorios ActiveRecord: manejo de datos en RoR ´ El ciclo de una peticion Cursos del GUL on Rails ´ 3 Por donde seguir

Ruby y Rails Ruby

Ruby y Rails Ruby

• Creado por Y UKIHIRO M ATSUMOTO en los 90

Ruby y Rails Ruby

• Creado por Y UKIHIRO M ATSUMOTO en los 90 • Interpretado

Ruby y Rails Ruby

• Creado por Y UKIHIRO M ATSUMOTO en los 90 • Interpretado • Dinamico ´

Ruby y Rails Ruby

• Creado por Y UKIHIRO M ATSUMOTO en los 90 • Interpretado • Dinamico ´ • Completamente orientado a objetos

Ruby y Rails Ruby

• Creado por Y UKIHIRO M ATSUMOTO en los 90 • Interpretado • Dinamico ´ • Completamente orientado a objetos • Mola =;-)

Ruby y Rails Ruby

5.times do puts ’¡F´ acil!’ end

Ruby y Rails Ruby

5.times do puts ’¡F´ acil!’ end • Cercano a nuestra forma de pensar

Ruby y Rails Ruby

5.times do puts ’¡F´ acil!’ end • Cercano a nuestra forma de pensar • Lo cual da una experiencia mejor

Ruby y Rails Ruby

5.times do puts ’¡F´ acil!’ end • Cercano a nuestra forma de pensar • Lo cual da una experiencia mejor • Te hace sentir inteligente

Ruby y Rails Ruby

5.times do puts ’¡F´ acil!’ end • Cercano a nuestra forma de pensar • Lo cual da una experiencia mejor • Te hace sentir inteligente • ¡Es divertido!

Ruby y Rails Ruby on Rails

Ruby y Rails Ruby on Rails

• Framework de desarrollo web basado en Ruby

Ruby y Rails Ruby on Rails

• Framework de desarrollo web basado en Ruby • Creado por DAVID H EINEMEIER H ANSON (37signals)

Ruby y Rails Ruby on Rails

• Framework de desarrollo web basado en Ruby • Creado por DAVID H EINEMEIER H ANSON (37signals) • Extra´ıdo (en principio) de su aplicacion ´ Basecamp

Ruby y Rails Ruby on Rails

• Framework de desarrollo web basado en Ruby • Creado por DAVID H EINEMEIER H ANSON (37signals) • Extra´ıdo (en principio) de su aplicacion ´ Basecamp • Liberado en 2005 (¡un ascenso meteorico!) ´

Ruby y Rails La ‘filosof´ıa’ de RoR

MVC Modelo - Vista - Controlador

Ruby y Rails La ‘filosof´ıa’ de RoR

MVC Modelo - Vista - Controlador DRY Don’t Repeat Yourself

Ruby y Rails La ‘filosof´ıa’ de RoR

MVC Modelo - Vista - Controlador DRY Don’t Repeat Yourself COC Convention Over Configuration

Ruby y Rails La ‘filosof´ıa’ de RoR

• Patrones comunes resueltos

Ruby y Rails La ‘filosof´ıa’ de RoR

• Patrones comunes resueltos • Buenas practicas ´ ‘empaquetadas’

Ruby y Rails La ‘filosof´ıa’ de RoR

• Patrones comunes resueltos • Buenas practicas ´ ‘empaquetadas’ • Hacer facil ´ lo correcto...

Ruby y Rails La ‘filosof´ıa’ de RoR

• Patrones comunes resueltos • Buenas practicas ´ ‘empaquetadas’ • Hacer facil ´ lo correcto... • ...y dif´ıcil lo incorrecto

Ruby y Rails La ‘filosof´ıa’ de RoR

• Patrones comunes resueltos • Buenas practicas ´ ‘empaquetadas’ • Hacer facil ´ lo correcto... • ...y dif´ıcil lo incorrecto “Si es feo, esta´ mal hecho”

Ruby y Rails La ‘filosof´ıa’ de RoR

• Patrones comunes resueltos • Buenas practicas ´ ‘empaquetadas’ • Hacer facil ´ lo correcto... • ...y dif´ıcil lo incorrecto “Si es feo, esta´ mal hecho” • ¡Les gusta a los disenadores! ˜

Ruby y Rails La ‘filosof´ıa’ de RoR

• Patrones comunes resueltos • Buenas practicas ´ ‘empaquetadas’ • Hacer facil ´ lo correcto... • ...y dif´ıcil lo incorrecto “Si es feo, esta´ mal hecho” • ¡Les gusta a los disenadores! ˜ • Una comunidad de primera

Trabajar con RoR 1 Ruby y Rails

Ruby Ruby on Rails La ‘filosof´ıa’ de RoR 2 Trabajar con RoR

Estructura de directorios ActiveRecord: manejo de datos en RoR ´ El ciclo de una peticion Cursos del GUL on Rails ´ 3 Por donde seguir

Trabajar con RoR Estructura de directorios

• Rails establece una estructura de directorios relativamente

r´ıgida

Trabajar con RoR Estructura de directorios

• Rails establece una estructura de directorios relativamente

r´ıgida • De esta forma, puede encontrar las cosas a traves ´ de

convenciones

Trabajar con RoR Estructura de directorios

$ rails ←-

Trabajar con RoR Estructura de directorios

app controllers models views layouts config db lib log public script test tmp vendor

Trabajar con RoR Estructura de directorios

app controllers models views layouts config db lib log public script test tmp vendor

´ ´ Codigo de la aplicacion

Trabajar con RoR Estructura de directorios

app controllers models views layouts config db lib log public script test tmp vendor

Controladores

Trabajar con RoR Estructura de directorios

app controllers models views layouts config db lib log public script test tmp vendor

Modelos

Trabajar con RoR Estructura de directorios

app controllers models views layouts config db lib log public script test tmp vendor

Vistas (un directorio por controlador)

Trabajar con RoR Estructura de directorios

app controllers models views layouts config db lib log public script test tmp vendor

´ ´ Layouts, vistas genericas de aplicacion

Trabajar con RoR Estructura de directorios

app controllers models views layouts config db lib log public script test tmp vendor

´ de la aplicacion ´ (conexion ´ a base Configuracion de datos, etc.)

Trabajar con RoR Estructura de directorios

app controllers models views layouts config db lib log public script test tmp vendor

Archivos referentes a la base de datos (esquema, etc.)

Trabajar con RoR Estructura de directorios

app controllers models views layouts config db lib log public script test tmp vendor

´ ´ Librer´ıas genericas a toda la aplicacion

Trabajar con RoR Estructura de directorios

app controllers models views layouts config db lib log public script test tmp vendor

Logs

Trabajar con RoR Estructura de directorios

app controllers models views layouts config db lib log public script test tmp vendor

´ Archivos estaticos (CSS, Javascript, ´ imagenes, etc.)

Trabajar con RoR Estructura de directorios

app controllers models views layouts config db lib log public script test tmp vendor

Utilidades (arranque del servidor, generadores, etc.)

Trabajar con RoR Estructura de directorios

app controllers models views layouts config db lib log public script test tmp vendor

Tests

Trabajar con RoR Estructura de directorios

app controllers models views layouts config db lib log public script test tmp vendor

Archivos temporales (sesiones, etc.)

Trabajar con RoR Estructura de directorios

app controllers models views layouts config db lib log public script test tmp vendor

´ Codigo de terceros (plugins, etc.)

Trabajar con RoR ActiveRecord: manejo de datos en RoR

• La ‘M’ de MVC: el Modelo

Trabajar con RoR ActiveRecord: manejo de datos en RoR

• La ‘M’ de MVC: el Modelo • Manejo de la base de datos con orientacion ´ a objetos

Trabajar con RoR ActiveRecord: manejo de datos en RoR

• La ‘M’ de MVC: el Modelo • Manejo de la base de datos con orientacion ´ a objetos • Convention Over Configuration

Trabajar con RoR ActiveRecord: manejo de datos en RoR

class Persona < ActiveRecord::Base end

• La clase Persona mapea la tabla personas

Trabajar con RoR ActiveRecord: manejo de datos en RoR

class Persona < ActiveRecord::Base end juan = Persona.find(:first, :conditions => "nombre = ’Juan’")

• La clase Persona mapea la tabla personas • El metodo ´ de clase find realiza casi cualquier consulta

Trabajar con RoR ActiveRecord: manejo de datos en RoR

class Persona < ActiveRecord::Base end juan = Persona.find(:first, :conditions => "nombre = ’Juan’") juan.telefono # 555 666 777 • La clase Persona mapea la tabla personas • El metodo ´ de clase find realiza casi cualquier consulta • Los campos de la tabla se mapean a metodos ´ de instancia

Trabajar con RoR ActiveRecord: manejo de datos en RoR

´ para asignar! ¡Tambien

Trabajar con RoR ActiveRecord: manejo de datos en RoR

´ para asignar! ¡Tambien juan.telefono = ’666 555 444’ juan.save

Trabajar con RoR Relaciones

ActiveRecord: manejo de datos en RoR

class Persona < ActiveRecord::Base belongs to :grupo end

Trabajar con RoR Relaciones

ActiveRecord: manejo de datos en RoR

class Persona < ActiveRecord::Base belongs to :grupo end class Grupo < ActiveRecord::Base has many :personas end

Trabajar con RoR Relaciones

ActiveRecord: manejo de datos en RoR

class Persona < ActiveRecord::Base belongs to :grupo end class Grupo < ActiveRecord::Base has many :personas end juan.grupo.nombre # "GUL-UC3M"

Trabajar con RoR Relaciones

ActiveRecord: manejo de datos en RoR

class Persona < ActiveRecord::Base belongs to :grupo end class Grupo < ActiveRecord::Base has many :personas end juan.grupo.nombre # "GUL-UC3M" gul.personas[0].nombre # "Juan"

Trabajar con RoR ´ Validacion

ActiveRecord: manejo de datos en RoR

class Persona < ActiveRecord::Base validates presence of :nombre, :apellidos validates length of :codigo postal, :is => 5 validates uniqueness of :nif validates format of :codigo postal, :with => /^ [0-9]{5}$/ end

Trabajar con RoR ActiveRecord: manejo de datos en RoR

´ Y muchas cosas mas...

Trabajar con RoR ´ El ciclo de una peticion

Trabajar con RoR config/routes.rb

• map.connect ’:controller/:action/:id’

´ El ciclo de una peticion

Trabajar con RoR config/routes.rb

´ El ciclo de una peticion

• map.connect ’:controller/:action/:id’ • map.connect ’blog’, :controller => ’posts’, :action => ’index’

Trabajar con RoR config/routes.rb

´ El ciclo de una peticion

• map.connect ’:controller/:action/:id’ • map.connect ’blog’, :controller => ’posts’, :action => ’index’ • map.connect ’’, :controller => ’site’, :action => ’home’

Trabajar con RoR config/routes.rb

´ El ciclo de una peticion

• map.connect ’:controller/:action/:id’ • map.connect ’blog’, :controller => ’posts’, :action => ’index’ • map.connect ’’, :controller => ’site’, :action => ’home’ • map.connect ’:blog title/:year/:month/:day/:post title’, :controller => ’posts’, :action => ’show’

Trabajar con RoR ´ de URLs Generacion

´ El ciclo de una peticion

link to(’Ver’, :controller => ’personas’, :action => ’show’, :id => juan.id)

Trabajar con RoR ´ de URLs Generacion

´ El ciclo de una peticion

link to(’Ver’, :controller => ’personas’, :action => ’show’, :id => juan.id) Ver

Trabajar con RoR Controlador

´ El ciclo de una peticion

class PersonasController < ApplicationController def list @personas = Persona.find(:all) end def show @persona = Persona.find(params[:id]) end end

Trabajar con RoR Vistas

• HTML + Codigo ´ Ruby

´ El ciclo de una peticion

Trabajar con RoR Vistas

• HTML + Codigo ´ Ruby •

´ El ciclo de una peticion

Trabajar con RoR Vistas

• HTML + Codigo ´ Ruby • •

´ El ciclo de una peticion

Trabajar con RoR Vistas

´ El ciclo de una peticion

• HTML + Codigo ´ Ruby • • • app/views//.rhtml

Trabajar con RoR Vistas

´ El ciclo de una peticion

• HTML + Codigo ´ Ruby • • • app/views//.rhtml • Uso de helpers

Trabajar con RoR Helpers

Son funciones que generan HTML • Generacion ´ de URLs

´ El ciclo de una peticion

Trabajar con RoR Helpers

Son funciones que generan HTML • Generacion ´ de URLs • Generacion ´ de formularios

´ El ciclo de una peticion

Trabajar con RoR Helpers

Son funciones que generan HTML • Generacion ´ de URLs • Generacion ´ de formularios • Formateo de datos

´ El ciclo de una peticion

Trabajar con RoR Helpers

Son funciones que generan HTML • Generacion ´ de URLs • Generacion ´ de formularios • Formateo de datos • Paginacion ´

´ El ciclo de una peticion

Trabajar con RoR Helpers

Son funciones que generan HTML • Generacion ´ de URLs • Generacion ´ de formularios • Formateo de datos • Paginacion ´ • ...

´ El ciclo de una peticion

Trabajar con RoR Helpers

Son funciones que generan HTML • Generacion ´ de URLs • Generacion ´ de formularios • Formateo de datos • Paginacion ´ • ... • Los que nosotros definamos

´ El ciclo de una peticion

Trabajar con RoR Cursos del GUL on Rails

Trabajar con RoR Cursos del GUL on Rails

• La aplicacion ´ tiene 79 l´ıneas

´ Por donde seguir 1 Ruby y Rails

Ruby Ruby on Rails La ‘filosof´ıa’ de RoR 2 Trabajar con RoR

Estructura de directorios ActiveRecord: manejo de datos en RoR ´ El ciclo de una peticion Cursos del GUL on Rails ´ 3 Por donde seguir

´ Por donde seguir

• http://www.ruby-lang.org/

´ Por donde seguir

• http://www.ruby-lang.org/ • http://www.rubyonrails.org/

´ Por donde seguir

• http://www.ruby-lang.org/ • http://www.rubyonrails.org/ • http://www.rubyonrails.org/screencasts

´ Por donde seguir

• http://www.ruby-lang.org/ • http://www.rubyonrails.org/ • http://www.rubyonrails.org/screencasts • http://lists.simplelogica.net/mailman/listinfo/ror-es

´ Por donde seguir

• http://www.ruby-lang.org/ • http://www.rubyonrails.org/ • http://www.rubyonrails.org/screencasts • http://lists.simplelogica.net/mailman/listinfo/ror-es • http://blog.invisible.ch/files/rails-reference-1.1.pdf

´ Por donde seguir

• http://www.ruby-lang.org/ • http://www.rubyonrails.org/ • http://www.rubyonrails.org/screencasts • http://lists.simplelogica.net/mailman/listinfo/ror-es • http://blog.invisible.ch/files/rails-reference-1.1.pdf • http://api.rubyonrails.org/

´ Por donde seguir

´ Por donde seguir

¿Alguna pregunta?

Gracias a todos por venir