Desarrollo de Apps Web en Ruby on Rails

Embed Size (px)

Citation preview

Red Noise Shapes

Ruby on Rails 3

Qu es Ruby on Rails?

Por qu elegir Rails?

MVC (Modelo-Vista-Controlador)

Hola Mundo en Rails

Entornos de ejecucin en Rails

Resources (Recursos) y REST

Almacenamiento de Registros

Incluyendo comentarios

Referencias

ExpositorBayron Jos GuevaraDigital Sense S.A. de C.V.Fundador y Presidente

www.digitalsensehn.com

Qu es Ruby on Rails?

Rails es un framework o entorno de programacin escrito en Ruby para el desarrollo de aplicaciones Web.Ruby es un lenguaje de programacin orientado a objetos creado por Yukihiro Matsumoto como un lenguaje amigable al programador, es decir, su sintaxis esta enfocada en incrementar la productividad y no en la eficiencia de la mquina.

#mostrar contenido de un archivoFile.open(ejemplo.txt).each do |linea| puts lineaend

1. Proporciona un Stack completo de tecnologas Web (Todo en uno)

2. Solidez y madurez. Twitter, Groupon, Github3. Pensado en la productividad (Enfatiza convencin sobre configuracin)4. Comunidad grande y licencia libre (MIT)

Por qu elegir Rails sobre otros frameworks?

MVC (Modelo-Vista-Controlador)

Rails es fundamentalmente una implementacin de un patrn de diseo de software conocido como MVC.Este divide un sistema en tres componentes:El modelo de datos

La vista o interfaz grfica

El controlador que contiene la 'lgica del negocio'.

Hola Mundo en Rails

Pasos:1. Instalar Ruby 1.8.7 o superior.
Pueden descargarlo desde el sitio oficial o mediante Ruby Version Manager (RVM)2. Instalar Rails 3.2 o superior

3. Crear nuevo proyecto en Rails

4. Comienza la accin. Abre tu editor de texto favorito. Si prefieres un IDE recomiendo el plugin Ruby on Rails para Netbeans y plugin Aptana para Eclipse (ambos libres) o Ruby Mine (comercial)

$ gem install rails

$ rails new mi_app

5. Configurar del entorno.
Instalamos el gem rails-i18n para habilitar la traduccin al espaol de Rails, siguiendo estos pasos:a. Editamos el archivo Gemfile donde agregamos las dependencias o gems de nuestro proyecto.

b. Luego instalamos estos gems ejecutando el siguiente comando en la consola:

Hola Mundo en Rails

...gem 'rails-i18n'...

$ bundle install

Luego cambiamos la configuracin de Rails adaptndolo a nuestro idioma y zona horaria.Hacemos estos incluyendo las siguientes lineas en el archivo config/application.rb

Hola Mundo en Rails

module MiAppclass Application < Rails::Application...# Establecer zona horariaconfig.time_zone = 'America/Tegucigalpa'# Establecer idioma, conf. regionalconfig.i18n.default_locale = 'es'...

6. Crear un controlador llamado Paginas y una accin inicio.

7. Crear una plantilla HTML llamada inicio.html.erb dentro de app/views/paginas

Hola Mundo en Rails

# Nuestra clase controladora debe extender a
# ApplicationController class PaginasController < ApplicationController # La accion se crea como un metodo de la clase def inicio @mensaje = "Hola Mundo" endend

8. Por ltimo mapeamos una URL a nuestro controlador en el ruteador


Ejecutando nuestra aplicacin:Para probar nuestra aplicacin primero debemos iniciar un servidor web, Rails ya viene incorporado con uno llamado Webrick.

Hola Mundo en Rails

MiApp::Application.routes.draw do # Especificamos nuestro controlador y accin separados mediante un simbolo de #
match 'inicio' => 'paginas#inicio'...end

Ejecutando nuestra aplicacin (continuacin):1. Iniciar el servidor web ejecutando el siguiente comando dentro del directorio de nuestra app

2. Ingresamos en un navegador web la URL que corresponde a la ruta que establecimos.
Webrick escucha por defecto en el puerto 3000

La pgina web resultante debera mostrar el mensaje 'Hola Mundo'

Hola Mundo en Rails

$ rails server

http://localhost:3000/inicio

Por defecto los nuevos proyectos de Rails vienen pre-configurados con tres (3) entornos de ejecucin, los cuales consisten en configuraciones tales como: base de datos, caches, logs, gems a utilizar etc.

Desarrollo. Es aquel que utilizamos mientras la app esta en proceso de creacin

Pruebas. Se usa para la ejecucin de los casos de prueba. til en Test Driven Development (TDD)

Produccin. Utilizado durante la ejecucin en vivo o antes los usuarios reales.

Entornos de ejecucin en Rails

REST (acrnimo de Transferencia de Estado Representacional) es un estilo de arquitectura de software para Web.Rails hace uso intensivo de esta tcnica para representar recursos/objetos -por ejemplo: entidades de datos- y realizar operaciones CRUD (Create/Read/Update/Delete) sobre los mismos.En este contexto REST bsicamente es un esquema de URLs y mtodos HTTP que representan operaciones (leer, crear, actualizar, ver nmina, etc) sobre un recurso, digamos, un Empleado.

Resources (Recursos) y REST

Resources (Recursos) y REST

OperacinRutaMtodo HTTP

Ingresar datos/empleados/newGET

Crear registro/empleadosPOST

Leer/empleados/1GET

Modificar datos/empleados/1/editGET

Actualizar registro/empleados/1PUT

Eliminar registro/empleados/1DELETE

Listar todos/empleadosGET

Rutas por defecto creadas por Rails para el recurso Empleado

Como pueden observar las operaciones que requieren de una interfaz grfica y no modifican el estado de un recurso (ingresar y actualizar datos, leer, listar) utilizan el mtodo GET.Las dems operaciones que si modifican estados, utilizan el resto de los mtodos.

Registrar un Recurso en RailsSolamente necesitamos abrir el archivo de rutas (ubicado en config/routes.rb) y agregar la siguiente linea:

Esto hace que Rails automticamente cree rutas y mtodos de ayuda para las siete operaciones descritas anteriormente. Adems es posible incorporar nuevas fcilmente.

Resources (Recursos) y REST

MiApp::Application.routes.draw do... resources :empleados...end

Virtualmente todas las aplicaciones web necesitan acceder a un almacn de datos que les permita recuperar informacin persistente y generar contenido dinmico.La M de Modelo en MVC hace alusin a esto, al modelo de datos subyacente. En Rails esto se gestiona a travs de un mdulo del ncleo conocido como Active Record (Registro Activo).A diferencia de otros frameworks de BD (como Hibernate), Active Record casi no requiere de modificaciones ya que Rails en general opta por convencin sobre configuracin.

Creacin de un modelo de datos

Otro aspecto importante es que Rails permite realizar operaciones genricas sobre la base de datos, es decir, independiente del DBMS que se utilice.Pasos para crear un modelo de datos

1. Configurar la base de datos. Rails por defecto utiliza SQLite. Podemos cambiarla en el archivo config/database.ymlYML es un lenguaje utilizado por Rails para almacenar configuraciones de una forma ms simple.

Creacin de un modelo de datos

2. Crear el modelo y migracin de nuestra base de datos. Tomemos un ejemplo simple de una aplicacin de blogs:

Creacin de un modelo de datos

development: adapter: sqlite3 database: db/development.sqlite3 pool: 5 timeout: 5000

test: ...production: ...

Ejecutamos los siguientes comandos:

3. Editar la migracin generada por Rails, adaptndola a nuestras necesidades

Creacin de un modelo de datos

$ rails generate model Entrada titulo:string contenido:string

$ rails generate model Comentario texto:string entrada_id:integer

class CreateEntradas < ActiveRecord::Migration def change create_table :entradas do |t| t.string :titulo t.string :contenido # Crea dos columnas: created_at y updated_at t.timestamps end add_index :entradas, :idend

3. Ejecutar la migracin y por ende la creacin de las respectivas tablas

Podemos confirmar que la base de datos y tablas fueron creadas inspeccionando el archivo de datos de SQLite.En lo personal prefiero utilizar SQLite Manager pero tambin existen otras alternativas libres

Creacin de un modelo de datos

$ rake db:migrate

4. Abrimos los modelos de Active Record generados previamente y agregamos relaciones, validaciones y otras conf. necesarias

Creacin de un modelo de datos

class Entrada < ActiveRecord::Base alias_attribute :fecha_publicacion, :created_at has_many :comentarios validates :titulo, :length => 10..80 validates :contenido, :length => { :maximum => 255 }, :presence => trueend

class Comentario < ActiveRecord::Base alias_attribute :fecha_publicacion, :created_at belongs_to :entrada validates :texto, :length => { :maximum => 255 }, :presence => true validates :entrada, :presence => trueend

Almacenamiento de registros

Ahora procedamos a crear nuevas entradas y comentarios:1. Registramos las entradas y comentarios como un recurso de Rails

Miaga::Application.routes.draw do... resources :entradas resources :comentarios...end

Almacenamiento de registros

2. Creamos el controlador y la acciones para ingresar y ver una entrada

class EntradasController < ApplicationController # Formulario de ingreso de nueva entrada def new
... end

# Insertar entrada en BD def create
... end

# Mostrar entrada def show
... endend

Almacenamiento de registros

3. Creamos las respectivas plantillas o vistas.
Es importante sealar que Rails utiliza layouts los cuales son plantillas que por defecto se aplican a todas las acciones, aqu ponemos elementos de diseo que se repiten en todas las pginas.3.1 Modificamos el layout por defecto para incluir el ttulo de nuestras pginas y una caja de mensajes.

...

3.2 Creamos la vista del formulario de ingreso en app/views/entradas/new.html.erb

Almacenamiento de registros

@entrada %>





'80x6' %>

3.3. Ahora creamos la plantilla que mostrar la informacin de cada entrada en app/views/entradas/show.html.erb

Almacenamiento de registros

@nuevo_comentario %>

Ttulo:

Contenido

Ahora vamos a mostrar los comentarios de cada entrada y un formulario de ingreso. Para ello seguimos los siguientes pasos:1. Creamos el controlador de los comentarios, pero ahora solamente definimos la accin create.

Incluyendo comentarios

class ComentariosController < ApplicationController # Insertar comentario en BD def create ... endend

2. Modificamos la plantilla de entradas, ya que desde cada entrada se podrn ver y asociar nuevos comentarios.

Incluyendo comentarios

Comentarios


'60x4' %>
@entrada.id%>

Mostrando

Publicado a las

Algunas observaciones con respecto a la plantilla anterior:Hemos incluido un hidden field que enva el ID de la entrada relacionada.

Utilizamos el mtodo pluralize que permite mostrar una frase en plural o singular segn el valor suministrado

Hemos utilizado el alias fecha_publicacion en lugar del campo created_at de la base de datos

La fechas en Rails poseen un mtodo llamado strftime que permite especificar el formato en que se mostrar la fecha.

Incluyendo comentarios

Referencias

Sitio oficial de Ruby en espaol: http://www.ruby-lang.org/es/

Sitio web oficial de Rails: http://rubyonrails.org

Rails Casts: http://railscasts.com

Libros recomendadosRuby on Rails Tutorial (Gratis): http://ruby.railstutorial.org

The Rails 3 Way por Obie Fernndez

Gracias por su atencin

Esta presentacin se encuentra disponible en:
www.slideshare.net/Socrattes

Pueden descargar el cdigo fuente en:
github.com/Socrattes2099/RubyOnRails-FLISOL

Click to edit the title text format