Click here to load reader

Ruby on Rails

  • View
    337

  • Download
    2

Embed Size (px)

DESCRIPTION

 

Text of Ruby on Rails

  • 1. RubyonRails Desarrollo Web gil Javier Espinazo Pagn Convocatoria Febrero 2005/2006

2. Qu esRuby ?

  • Lenguaje interpretado Orientado a Objetos
  • Tipado dinmicamente y similar a Perl y Phyton
  • Sintaxis simple, clara y uniforme
  • Biblioteca de clases extensa e intuitiva
  • Utilizacin de bloques para parametrizar mtodos (iteradores, listeners) y bucles
  • Tipos primitivos son tambin clases y permiten ejecucin segura
  • Manejo avanzado de expresiones regulares ycadenas de texto

3. Qu esRuby ? (Ejemplos)

  • defanalizar_expresion(texto, expr, entero)
  • iftexto=~expr
  • entero.upto(10)do
  • print "#{$`}#{$'}
  • yield
  • end
  • else
  • no coincide
  • end
  • end
  • analizar_expresion(Ruby on Rails, /R+l/, 8)do
  • print coincide
  • end
  • Ruby on s coincide coincide coincide

4. Qu esRuby ? (Ejemplos)

  • classFile
  • defFile.open_and_process(*args)
  • f = File.open(*args)
  • yieldf
  • f.close()
  • end
  • end
  • File.open_and_process("testfile", "r")do|file|
  • whileline = file.gets
  • puts line
  • end
  • end
  • Linea uno
  • Linea dos

5. Qu esRails ?

  • Frameworkde desarrollo web conRuby
  • Manifiesto gil :
    • Individuo e interacciones antes que procesos y herramientas
    • Desarrollar software antes que documentar
    • Colaborar con el cliente antes que negociar contratos
    • Responder al cambio antes que seguir un plan
  • Dont Repeat Yourself (DRY)

6. Qu esRails ? (2)

  • Individuo e interacciones antes que procesos y herramientas:
    • Es ms conveniente crear primero el equipo de programacin y que ste configure su propio entorno de desarrollo en base a sus necesidades
  • Desarrollar software antes que documentar:
    • No producir documentos a menos que sean necesarios de forma inmediata. Documentacin breve y concisa
  • Colaborar con el cliente antes que negociar contratos:
    • Interaccin constante entre cliente y equipo
  • Responder al cambio antes que seguir un plan:
    • Planificacin flexible y abierta

7. Qu esRails ? (3)

  • Arquitectura Modelo-Vista-Controlador
    • Modelo :Active Record
      • ORM paraRails
      • Utiliza convenciones para minimizar la configuracin
      • Abstraccin de alto nivel
    • Vista:Action View
      • Ficheros RHTML y XML
      • Objetos del Controlador accesibles y variables de entorno
      • MdulosHelper
    • Controlador: Action Controller
      • Resolucininteligentede dependencias
      • Fcil configuracin de dependencias
      • Manejo sencillo de cookies, sesiones y variables de la conexin

8. Qu esRails ? (5)

  • Facilidad de configuracin
    • Minimiza los ficheros de configuracin mediante el uso estandarizado y jerrquico de directorios:
      • app/ : modelos, vistas y controladores
      • conf/ : configuracin general y de conexiones a BBDD
      • db/ : esquemas de BBDD
      • doc/ : documentacin autogenerada
      • log/ : bitcora de la ejecucin
      • script/ : scripts de utilidades
      • test/ : tests unitarios, funcionales, etc.
  • Diferentes modos de funcionamiento en base al tipo de ejecucin

9. El Modelo:Active Record

  • ORM propio de Rails cercano al estndar
  • Facilidad de asociacin clase-tabla:
    • Clase debe heredar deActiveRecord::Base
    • Railsasume el nombre de la tabla como el plural del nombre de la clase (mtodopluralize() ).
    • Permite asociacin explcita
    • Atributos de la clase se infieren en tiempo de ejecucin
  • Manejo automatizado de claves primarias

10. El Modelo:Active Record(2)

  • Ejemplo:
    • Creamos una tabla orders de rdenes de compra:
      • create tableorders {
      • id int not null auto_increment,
      • name varchar(100) not null,
      • email varchar(255) not null,
      • address text not null,
      • pay_type char(10) not null,
      • shipped_at datetime null,
      • primary key(id)
      • };

11. El Modelo:Active Record(3)

  • Ejemplo (sigue):
    • Ahora queremos acceder a un objeto de la tabla orders, para lo que declaramos:
      • classOrder < ActiveRecord::Base
    • Railsresuelve las asociaciones y ya podemos utilizar objetos de la tabla:
      • order = Order.find(123)
      • order.name = Javier Espinazo
      • order.save

12. El Modelo:Active Record(4)

  • Conectar con una BBDD es tn fcil como rellenar unhash :
  • ActiveRecord::Base.establish_connection(
      • :adapter => mysql
      • :host => servidorBBDD.com
      • :database => baseDeDatos
      • :username => nombreUsuario
      • :password => claveUsuario
      • )
  • Las operaciones CRUD se realizan con mtodos sencillos:
    • Crear : creamos un objeto connew()y lo guardamos consave() .
    • Leer : poderoso mtodofind()que admite
      • Clave primaria
      • Consulta explcita en SQL con comodines dinmicos ( placeholders )
    • Actualizar : utilizandosave() ,update() ,update_attribute()oupdate_attributes()
    • Borrar:utilizandodelete()odelete_all()

13. El Modelo:Active Record(5)

  • Relaciones entre tablas se especifican intuitivamente:
    • Directivashas_one ,has_many ,belongs_toyhas_and_belongs_to_manyen la declaracin de clase
  • Las directivas generan mtodos para manejar las relaciones
  • Transacciones implementadas como bloques:
    • Bloques utilizados con el mtodotransaction()deActiveRecord::Basese ejecutan transaccionalmente
    • Si se aborta la transaccin, los cambios no afectan a la BBDD pero s al programa cliente
    • Necesidad de utilizar clusulasrescuede tratamiento de excepciones para dejar los datos de programa consistentes

14. La vista:Action View

  • Creacin programtica de ficheros XML: claseBuilder
  • Cdigo HTML + cdigoRuby= plantillas RHTML
  • Variables de instancia del controlador y controlador disponibles en la vista
  • Variables de sesin y conexin disponibles en la vista (menos usadas)
  • CdigoRubyal estilo de JSP => duplicacin de cdigo y poca legibilidad
  • Solucin: mdulosHelper

15. La vista:Action View(2)

  • Define mtodos que pueden ser llamados por el RHTML => cdigo ms corto, ms legible y centralizado (principio DRY)
  • UnHelperpor defecto para cada controlador y tambin podemos definir nuevos o compartirlos
  • Ejemplo:
    • Co

Search related