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