Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)

Post on 24-Dec-2014

3.513 views 1 download

description

Esta es la presentación correspondiente a la charla "Descubriendo Ruby on Rails: Desarrollo Agil de Aplicaciones Web" dictada el 5 de Junio de 2007 por Juan Maria Martinez Arce y Carlos Kozuszko, ambos miembros de INSIGNIA (www.insignia4u.com); en el marco de la "Semana de la Ingenieria 2007".

Transcript of Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)

(in)signiapresenta

Juan María Martinez Arce

Carlos Kozuszko

Descubriendo Ruby on RailsDesarrollo Agil de Aplicaciones Web

> tiempo > productividad

¡Tiempo!

¿Desarrollo Web?

Aplicación Web = Aplicación accedida por Browser

Internet

+ Cobertura Global

+ Bajos requerimientos de Hardware

+ Fácil de Usar

+ Mantenimiento

- Seguridad

Desktop vs Web

Mejores Prácticas

DRYDon’t Repeat Yourself!

MVCModel View Controller

ORMObject Relational Mapping

ORM – Active Record

Control de Versiones

Convention over ConfigurationConvención sobre configuración

Frameworks

Frameworks & Libraries

Frameworks tradicionales

• Struts - Java

• Springs - Java

• PHP + templates + ORM

• Catalyst - Perl

Frameworks ágiles

• Ruby on Rails – Ruby

• CakePHP – PHP

• Django – Python

Conociendo (in)signia

• 4 Desarrolladores

• 2 Diseñadores

• 7 proyectos en curso:– Portal de Noticias– Extranet de Clientes– Campus Virtual– Catálogo de Productos

¿Cómo hacemos?

(in)signia elige

(in)signia elige

(in)signia elige

(in)signia elige

¿Por qué Ruby on Rails?

class Empresa < ActiveRecord::Base belongs_to :vendedor has_many :usuarios validates_presence_of :razon_social validates_uniqueness_of :codigoend

Empresa.find(:all)Empresa.find(params[:id])Empresa.find_by_codigo(params[:codigo])Empresa.find_or_create_by_codigo(params[:codigo])

@empresa = Empresa.find(params[:id])@empresa.razon_social = ’(in)signia’@empresa.codigo = ’000999100’@empresa.save!

class EmpresasController < ApplicationController administrate_me :search => [‘razon_social’], :accepted => [:show],

:secured => true end

cap deploy

¡Nos gusta mucho!

Puntos fuertes de Rails

Open Source

Plataformas soportadas

• Servidores y entornos de desarrollo

– Linux/Unix– Windows– Mac OS X

• Servidores Web

– Apache– Lighttpd– IIS

• Bases de datos

– MySql– SQLite– Postgres– Oracle– MS SQL Server– DB2

Convención sobre Configuración

Ventajas

• ORM• Migraciones• Mapeo de peticiones

HTTP

• Soporte para AJAX• Plugins

class Empresa < ActiveRecord::Base belongs_to :vendedor, :class => “Persona” has_many :usuariosend

class Usuario < ActiveRecord::Base belongs_to :empresaend

class Persona < ActiveRecord::Base has_many :empresasend

vendedores = Persona.find(:all)vendedores.each do |vendedor| vendedor.empresas.each do |empresa| empresa.activar! puts “Empresa #{empresa} activada.” endend

class CreatePersonas < ActiveRecord::Migration def self.up create_table :personas do |t| t.column :nombre, :string t.column :apellido, :string t.column :domicilio, :string end end

def self.down drop_table :personas endend

class CreateEmpresas < ActiveRecord::Migration def self.up create_table :empresas do |t| t.column :razon_social, :string t.column :cuit, :string t.column :vendedor_id, :integer end end

def self.down drop_table :empresas endend

ActionController::Routing::Routes.draw do |map| map.connect “”, :controller => “login”, :action => “index” map.connect “:controller/:action/:id”end

http://www.demo.com -> LoginController.indexhttp://www.demo.com/empresas/show/1 -> EmpresasController.showhttp://www.demo.com/empresas/edit/1 -> EmpresasController.edithttp://www.demo.com/personas/show/5 -> PersonasController.showhttp://www.demo.com/personas/edit/5 -> PersonasController.edit

class PersonasController < ApplicationController

def show @persona = Persona.find(params[:id]) end

end

<html> <body> <p>Hola <%= @persona.nombre %></p> </body></html>

<html> <body> <% form_for :persona, @persona do |f| %> <label> Nombre: <%= f.text_field :nombre %> </label> <% end %> </body></html>

<html> <body> <p id=“hora”> Hora: <%= Time.now %></p> <%= link_to_remote “Actualizar!”, :url => {:action => “actualizar”}, :update => “hora” %> </body></html>

Plugins

• acts_as_authenticated• file_column• annotate_models• exception_notification• permalink_fu

• textile_editor_helper• liquid• asset_packager• acts_as_ferret

Menos conversación… Más acción(elvis)

¿dudas, consultas, opiniones?(trataremos de responder)

(in)signiahttp://www.insignia4u.com

Juan Maria Martinez Arcejuan@insignia4u.com

Carlos Kozuszkocarlos@insignia4u.com

Muchas gracias!