SlideShare una empresa de Scribd logo
1 de 30
Ruby on Rails 3
¿Qué es Ruby on Rails?
¿Por qué elegir Rails?
MVC (Modelo-Vista-Controlador)
Hola Mundo en Rails
Entornos de ejecución en Rails
Resources (Recursos) y REST
Almacenamiento de Registros
Incluyendo comentarios
Referencias
                         Expositor
                         Bayron José Guevara
                         Digital Sense S.A. de C.V.
                         Fundador y Presidente

                         www.digitalsensehn.com
¿Qué es Ruby on Rails?
Rails es un framework o entorno de
 programación escrito en Ruby para el
 desarrollo de aplicaciones Web.
Ruby es un lenguaje de programación
 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 máquina.
  #mostrar contenido de un archivo
  File.open(“ejemplo.txt”).each do |linea|
   puts linea
  end
¿Por qué elegir Rails
                sobre otros frameworks?
1. Proporciona un Stack completo de tecnologías
  Web (Todo en uno)




2.   Solidez y madurez. Twitter, Groupon, Github
3. Pensado en la productividad (Enfatiza
  convención sobre configuración)
4. Comunidad grande y licencia libre (MIT)
MVC (Modelo-Vista-Controlador)
         Rails es fundamentalmente
          una implementación de un
          patrón de diseño de
          software conocido como
          MVC.
         Este divide un sistema en
          tres componentes:
         El modelo de datos
         La vista o interfaz gráfica
         El controlador que contiene
           la 'lógica 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
     $ gem install rails

3. Crear nuevo proyecto en Rails
     $ rails new mi_app

4. Comienza la acción. 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)
Hola Mundo en Rails
5. Configurar del entorno.
  Instalamos el gem rails-i18n para habilitar
  la traducción al español de Rails, siguiendo
  estos pasos:
a. Editamos el archivo Gemfile donde
  agregamos las dependencias o gems de
  nuestro proyecto.
...
gem 'rails-i18n'
...


b. Luego instalamos estos gems ejecutando
  el siguiente comando en la consola:
$ bundle install
Hola Mundo en Rails
Luego cambiamos la configuración de Rails
 adaptándolo a nuestro idioma y zona
 horaria.
Hacemos estos incluyendo las siguientes
  lineas en el archivo config/application.rb
module MiApp
class Application < Rails::Application
...
# Establecer zona horaria
config.time_zone = 'America/Tegucigalpa'
# Establecer idioma, conf. regional
config.i18n.default_locale = 'es'
...
Hola Mundo en Rails
6. Crear un controlador llamado Paginas y una acción
   inicio.
  # 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"
    end
  end

7. Crear una plantilla HTML llamada inicio.html.erb dentro
   de app/views/paginas
  <%= # Embebemos codigo de Ruby haciendo uso de los
    tags '<%=' y '%>' de forma similar a PHP %>
  <h1><%= @mensaje %></h1>
Hola Mundo en Rails
8. Por último mapeamos una URL a nuestro
  controlador en el ruteador
 MiApp::Application.routes.draw do
   # Especificamos nuestro controlador y acción
   separados mediante un simbolo de #
     match 'inicio' => 'paginas#inicio'
 ...
 end


 Ejecutando nuestra aplicación:
Para probar nuestra aplicación primero
 debemos iniciar un servidor web, Rails ya
 viene incorporado con uno llamado Webrick.
Hola Mundo en Rails
Ejecutando nuestra aplicación (continuación):
1. Iniciar el servidor web ejecutando el siguiente
  comando dentro del directorio de nuestra app
    $ rails server

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

La página web resultante debería mostrar el
  mensaje 'Hola Mundo'
Entornos de ejecución en Rails
Por defecto los nuevos proyectos de Rails
 vienen pre-configurados con tres (3)
 entornos de ejecución, 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 creación
Pruebas. Se usa para la ejecución de los
 casos de prueba. Útil en Test Driven
 Development (TDD)
Producción. Utilizado durante la ejecución en
 vivo o antes los usuarios reales.
Resources (Recursos) y REST
REST (acrónimo de Transferencia de Estado
 Representacional) es un estilo de arquitectura de
 software para Web.
Rails hace uso intensivo de esta técnica para
 representar recursos/objetos -por ejemplo:
 entidades de datos- y realizar operaciones
 CRUD (Create/Read/Update/Delete) sobre los
 mismos.
En este contexto REST básicamente es un
 esquema de URLs y métodos HTTP que
 representan operaciones (leer, crear, actualizar,
 ver nómina, etc) sobre un recurso, digamos, un
 Empleado.
Resources (Recursos) y REST
   Operación             Ruta                        Método HTTP
   Ingresar datos        /empleados/new              GET
   Crear registro        /empleados                  POST
   Leer                  /empleados/1                GET
   Modificar datos       /empleados/1/edit           GET
   Actualizar registro   /empleados/1                PUT
   Eliminar registro     /empleados/1                DELETE
   Listar todos          /empleados                  GET
      Rutas por defecto creadas por Rails para el recurso Empleado

Como pueden observar las operaciones que requieren de
 una interfaz gráfica y no modifican el estado de un
 recurso (ingresar y actualizar datos, leer, listar) utilizan el
 método GET.
Las demás operaciones que si modifican estados, utilizan
  el resto de los métodos.
Resources (Recursos) y REST
Registrar un Recurso en Rails
Solamente necesitamos abrir el archivo de rutas
 (ubicado en config/routes.rb) y agregar la
 siguiente linea:
  MiApp::Application.routes.draw do
  ...
    resources :empleados
  ...
  end


Esto hace que Rails automáticamente cree rutas y
 métodos de ayuda para las siete operaciones
 descritas anteriormente. Además es posible
 incorporar nuevas fácilmente.
Creación de un modelo de datos
Virtualmente todas las aplicaciones web
  necesitan acceder a un almacén de datos que
  les permita recuperar información persistente y
  generar contenido dinámico.
La M de Modelo en MVC hace alusión a esto, al
 modelo de datos subyacente. En Rails esto se
 gestiona a través de un módulo del núcleo
 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 convención sobre configuración.
Creación de un modelo de datos
Otro aspecto importante es que Rails permite
 realizar operaciones genéricas 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.yml
YML es un lenguaje utilizado por Rails para
 almacenar configuraciones de una forma más
 simple.
Creación de un modelo de datos
development:
  adapter: sqlite3
  database: db/development.sqlite3
  pool: 5
  timeout: 5000

test: ...
production: ...


 2. Crear el modelo y migración de nuestra base
   de datos. Tomemos un ejemplo simple de una
   aplicación de blogs:
Creación de un modelo de datos
Ejecutamos los siguientes comandos:
   $ rails generate model Entrada titulo:string
     contenido:string

   $ rails generate model Comentario texto:string
     entrada_id:integer

3. Editar la migración generada por Rails, adaptándola a
   nuestras necesidades
   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, :id
   end
Creación de un modelo de datos
3. Ejecutar la migración y por ende la creación de las
   respectivas tablas
   $ rake db:migrate

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
  también existen otras alternativas libres
Creación de un modelo de datos
4. Abrimos los modelos de Active Record
  generados previamente y agregamos relaciones,
  validaciones y otras conf. necesarias
class Entrada < ActiveRecord::Base
  alias_attribute :fecha_publicacion, :created_at
  has_many :comentarios
  validates :titulo, :length => 10..80
  validates :contenido, :length => { :maximum =>
  255 }, :presence => true
end

class Comentario < ActiveRecord::Base
  alias_attribute :fecha_publicacion, :created_at
  belongs_to :entrada
  validates :texto, :length => { :maximum => 255 },
  :presence => true
 validates :entrada, :presence => true
end
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
          ...
    end
  end
Almacenamiento de registros
3. Creamos las respectivas plantillas o vistas.
   Es importante señalar que Rails utiliza layouts los cuales
   son plantillas que por defecto se aplican a todas las
   acciones, aquí ponemos elementos de diseño que se
   repiten en todas las páginas.
3.1 Modificamos el layout por defecto para incluir el título
  de nuestras páginas y una caja de mensajes.
 <html>
 <head>...</head>
 <body>
 <h1><%= @titulo_pagina %></h1>
 <% #incluimos otra plantilla para mostrar mensajes %>
 <%= render 'shared/mensajes' %>
 <%= yield %>
 </body>
 </html>
Almacenamiento de registros
3.2 Creamos la vista del formulario de ingreso en
  app/views/entradas/new.html.erb
<%= render 'shared/validaciones', :entidad => @entrada
  %>

<%= form_for @entrada do |f| %>
    <%= f.label :titulo, 'Título:' %><br />
    <%= f.text_field :titulo %><br /><br />

    <%= f.label :contenido, 'Contenido:' %><br />
    <%= f.text_area :contenido, :size => '80x6'
  %><br />

    <%= f.submit 'Guardar' %>
<% end %>
Almacenamiento de registros
 3.3. Ahora creamos la plantilla que mostrará la información
   de cada entrada en app/views/entradas/show.html.erb
<%= render 'shared/validaciones', :entidad =>
  @nuevo_comentario %>

<h3 class='titulo'>Título: <%= @entrada.titulo %></h3>

<strong>Contenido</strong><br />
<p><%= @entrada.contenido %></p>

<%= link_to 'Ir a lista de entradas', entradas_path %>
Incluyendo comentarios
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 acción create.
 class ComentariosController < ApplicationController
   # Insertar comentario en BD
   def create
       ...
   end
 end
Incluyendo comentarios
2. Modificamos la plantilla de entradas, ya que desde cada
   entrada se podrán ver y asociar nuevos comentarios.
<div id="comentarios">
<h2>Comentarios</h2>
<%= form_for @nuevo_comentario do |f| %>
 <%= f.label :texto, 'Nuevo Comentario' %><br />
 <%= f.text_area :texto, :size => '60x4' %><br />
 <%= f.hidden_field :entrada_id, :value => @entrada.id%>
 <%= f.submit 'Enviar' %>
<% end %>
<h3>Mostrando <%= pluralize @comentarios.count,
  'comentario' %></h3>
<% @comentarios.each do |comentario| %>
    <em>Publicado a las <%=
  comentario.fecha_publicacion.strftime("%I:%M %p")
  %></em>
    <%= comentario.texto %>
<% end %>
</div>
Incluyendo comentarios
Algunas observaciones con respecto a la plantilla
  anterior:
Hemos incluido un hidden field que envía el ID de
 la entrada relacionada.
Utilizamos el método pluralize que permite mostrar
  una frase en plural o singular según 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 método llamado
  strftime que permite especificar el formato en que
  se mostrará la fecha.
Referencias
Sitio oficial de Ruby en español:
  http://www.ruby-lang.org/es/
Sitio web oficial de Rails:
  http://rubyonrails.org
Rails Casts: http://railscasts.com


Libros recomendados
Ruby on Rails Tutorial (Gratis):
 http://ruby.railstutorial.org
The Rails 3 Way por Obie Fernández
Gracias por su atención
   Esta presentación se encuentra disponible en:
         www.slideshare.net/Socrattes

      Pueden descargar el código fuente en:
github.com/Socrattes2099/RubyOnRails-FLISOL

Más contenido relacionado

La actualidad más candente

Model View Controller (MVC)
Model View Controller (MVC)Model View Controller (MVC)
Model View Controller (MVC)victorbalta
 
Poo introduccion al patron mvc - renee morales calhua
Poo  introduccion al patron mvc - renee morales calhuaPoo  introduccion al patron mvc - renee morales calhua
Poo introduccion al patron mvc - renee morales calhuaRenee Morales Calhua
 
Curso Java Resumen - Curso 2005-2006
Curso Java Resumen - Curso 2005-2006Curso Java Resumen - Curso 2005-2006
Curso Java Resumen - Curso 2005-2006Samuel Marrero
 
7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo
7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo
7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-DesarrolloLuis Fernando Aguas Bucheli
 
Desarrollo de aplicaciones empresariales con Java EE
Desarrollo de aplicaciones empresariales con Java EEDesarrollo de aplicaciones empresariales con Java EE
Desarrollo de aplicaciones empresariales con Java EEFernando Montaño
 
ASP.NET MVC (2011)
ASP.NET MVC (2011)ASP.NET MVC (2011)
ASP.NET MVC (2011)wildtango
 
JBossAS: Desarrollo con Java Server Faces
JBossAS: Desarrollo con Java Server FacesJBossAS: Desarrollo con Java Server Faces
JBossAS: Desarrollo con Java Server FacesAitor Acedo
 
Ejercicio basico jsf’s
Ejercicio basico jsf’sEjercicio basico jsf’s
Ejercicio basico jsf’sayreonmx
 
Aplicaciones en capas1
Aplicaciones en capas1Aplicaciones en capas1
Aplicaciones en capas1mariana
 
Grails: Framework para el desarrollo de aplicaciones Web No 2
Grails: Framework para el desarrollo de aplicaciones Web No 2Grails: Framework para el desarrollo de aplicaciones Web No 2
Grails: Framework para el desarrollo de aplicaciones Web No 2Esteban Saavedra
 
Grails: Framework para el desarrollo de aplicaciones Web No 4
Grails: Framework para el desarrollo de aplicaciones Web No 4Grails: Framework para el desarrollo de aplicaciones Web No 4
Grails: Framework para el desarrollo de aplicaciones Web No 4Esteban Saavedra
 
Aplicaciones web con jakarta struts - Javier Oliver Fulguera
Aplicaciones web con jakarta struts  - Javier Oliver FulgueraAplicaciones web con jakarta struts  - Javier Oliver Fulguera
Aplicaciones web con jakarta struts - Javier Oliver FulgueraJavier Oliver Fulguera
 
Taller integracion jsf spring
Taller integracion jsf springTaller integracion jsf spring
Taller integracion jsf springIBM
 
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos 7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos Luis Fernando Aguas Bucheli
 
1 curso javaserverfaces-presentacion_clase_1
1 curso javaserverfaces-presentacion_clase_11 curso javaserverfaces-presentacion_clase_1
1 curso javaserverfaces-presentacion_clase_1josezapana
 

La actualidad más candente (20)

Model View Controller (MVC)
Model View Controller (MVC)Model View Controller (MVC)
Model View Controller (MVC)
 
Poo introduccion al patron mvc - renee morales calhua
Poo  introduccion al patron mvc - renee morales calhuaPoo  introduccion al patron mvc - renee morales calhua
Poo introduccion al patron mvc - renee morales calhua
 
Curso Java Resumen - Curso 2005-2006
Curso Java Resumen - Curso 2005-2006Curso Java Resumen - Curso 2005-2006
Curso Java Resumen - Curso 2005-2006
 
7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo
7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo
7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo
 
Desarrollo de aplicaciones empresariales con Java EE
Desarrollo de aplicaciones empresariales con Java EEDesarrollo de aplicaciones empresariales con Java EE
Desarrollo de aplicaciones empresariales con Java EE
 
Asp.net
Asp.netAsp.net
Asp.net
 
ASP.NET MVC (2011)
ASP.NET MVC (2011)ASP.NET MVC (2011)
ASP.NET MVC (2011)
 
JBossAS: Desarrollo con Java Server Faces
JBossAS: Desarrollo con Java Server FacesJBossAS: Desarrollo con Java Server Faces
JBossAS: Desarrollo con Java Server Faces
 
Java server faces
Java server facesJava server faces
Java server faces
 
Framework
FrameworkFramework
Framework
 
Ejercicio basico jsf’s
Ejercicio basico jsf’sEjercicio basico jsf’s
Ejercicio basico jsf’s
 
01 introducción
01 introducción01 introducción
01 introducción
 
Aplicaciones en capas1
Aplicaciones en capas1Aplicaciones en capas1
Aplicaciones en capas1
 
Grails: Framework para el desarrollo de aplicaciones Web No 2
Grails: Framework para el desarrollo de aplicaciones Web No 2Grails: Framework para el desarrollo de aplicaciones Web No 2
Grails: Framework para el desarrollo de aplicaciones Web No 2
 
Grails: Framework para el desarrollo de aplicaciones Web No 4
Grails: Framework para el desarrollo de aplicaciones Web No 4Grails: Framework para el desarrollo de aplicaciones Web No 4
Grails: Framework para el desarrollo de aplicaciones Web No 4
 
Aplicaciones web con jakarta struts - Javier Oliver Fulguera
Aplicaciones web con jakarta struts  - Javier Oliver FulgueraAplicaciones web con jakarta struts  - Javier Oliver Fulguera
Aplicaciones web con jakarta struts - Javier Oliver Fulguera
 
Taller integracion jsf spring
Taller integracion jsf springTaller integracion jsf spring
Taller integracion jsf spring
 
Asp
AspAsp
Asp
 
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos 7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
 
1 curso javaserverfaces-presentacion_clase_1
1 curso javaserverfaces-presentacion_clase_11 curso javaserverfaces-presentacion_clase_1
1 curso javaserverfaces-presentacion_clase_1
 

Similar a Desarrollo de Apps Web en Ruby on Rails

API REST conceptos (Rails-api)
API REST conceptos (Rails-api)API REST conceptos (Rails-api)
API REST conceptos (Rails-api)Daryl Moreno
 
Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009Nelson Rojas Núñez
 
Introducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos WebIntroducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos WebFacundo E. Goñi Perez
 
Programacion web java
Programacion web javaProgramacion web java
Programacion web javaCésar Ocampo
 
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...JaenFrankcezco
 
Servicios web
Servicios webServicios web
Servicios webitoomac02
 
Servicios web
Servicios webServicios web
Servicios webitoomac02
 
Introducción a Tomcat
Introducción a TomcatIntroducción a Tomcat
Introducción a TomcatIker Canarias
 
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...Corporacion de Industrias Tecnologicas S.A.
 
Pleased to meet you, Laravel
Pleased to meet you, LaravelPleased to meet you, Laravel
Pleased to meet you, LaravelRolando Caldas
 
Aprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDBAprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDBAbimael Desales López
 
Manual programacion - java - jsp & xml
Manual   programacion - java - jsp & xmlManual   programacion - java - jsp & xml
Manual programacion - java - jsp & xmlgilhorak
 
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptxSibilinoAndante
 
Joserojas Web 2.0
Joserojas Web 2.0Joserojas Web 2.0
Joserojas Web 2.0Jose Rojas
 

Similar a Desarrollo de Apps Web en Ruby on Rails (20)

API REST conceptos (Rails-api)
API REST conceptos (Rails-api)API REST conceptos (Rails-api)
API REST conceptos (Rails-api)
 
Ruby on Rails
Ruby on RailsRuby on Rails
Ruby on Rails
 
Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009
 
Laravel 5.1
Laravel 5.1Laravel 5.1
Laravel 5.1
 
Introducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos WebIntroducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos Web
 
Programacion web java
Programacion web javaProgramacion web java
Programacion web java
 
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web
Servicios webServicios web
Servicios web
 
5-Unidad 2: Diseño de Vista-2.2 Para Web
5-Unidad 2: Diseño de Vista-2.2 Para Web5-Unidad 2: Diseño de Vista-2.2 Para Web
5-Unidad 2: Diseño de Vista-2.2 Para Web
 
Introducción a Tomcat
Introducción a TomcatIntroducción a Tomcat
Introducción a Tomcat
 
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
 
Pleased to meet you, Laravel
Pleased to meet you, LaravelPleased to meet you, Laravel
Pleased to meet you, Laravel
 
Aprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDBAprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDB
 
Introducción a Kohana Framework
Introducción a Kohana FrameworkIntroducción a Kohana Framework
Introducción a Kohana Framework
 
Manual programacion - java - jsp & xml
Manual   programacion - java - jsp & xmlManual   programacion - java - jsp & xml
Manual programacion - java - jsp & xml
 
Charla
CharlaCharla
Charla
 
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
 
Joserojas Web 2.0
Joserojas Web 2.0Joserojas Web 2.0
Joserojas Web 2.0
 
Servlet
ServletServlet
Servlet
 

Último

investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 

Último (11)

investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 

Desarrollo de Apps Web en Ruby on Rails

  • 1. Ruby on Rails 3 ¿Qué es Ruby on Rails? ¿Por qué elegir Rails? MVC (Modelo-Vista-Controlador) Hola Mundo en Rails Entornos de ejecución en Rails Resources (Recursos) y REST Almacenamiento de Registros Incluyendo comentarios Referencias Expositor Bayron José Guevara Digital Sense S.A. de C.V. Fundador y Presidente www.digitalsensehn.com
  • 2. ¿Qué es Ruby on Rails? Rails es un framework o entorno de programación escrito en Ruby para el desarrollo de aplicaciones Web. Ruby es un lenguaje de programación 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 máquina. #mostrar contenido de un archivo File.open(“ejemplo.txt”).each do |linea| puts linea end
  • 3. ¿Por qué elegir Rails sobre otros frameworks? 1. Proporciona un Stack completo de tecnologías Web (Todo en uno) 2. Solidez y madurez. Twitter, Groupon, Github 3. Pensado en la productividad (Enfatiza convención sobre configuración) 4. Comunidad grande y licencia libre (MIT)
  • 4. MVC (Modelo-Vista-Controlador) Rails es fundamentalmente una implementación de un patrón de diseño de software conocido como MVC. Este divide un sistema en tres componentes: El modelo de datos La vista o interfaz gráfica El controlador que contiene la 'lógica del negocio'.
  • 5. 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 $ gem install rails 3. Crear nuevo proyecto en Rails $ rails new mi_app 4. Comienza la acción. 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)
  • 6. Hola Mundo en Rails 5. Configurar del entorno. Instalamos el gem rails-i18n para habilitar la traducción al español de Rails, siguiendo estos pasos: a. Editamos el archivo Gemfile donde agregamos las dependencias o gems de nuestro proyecto. ... gem 'rails-i18n' ... b. Luego instalamos estos gems ejecutando el siguiente comando en la consola: $ bundle install
  • 7. Hola Mundo en Rails Luego cambiamos la configuración de Rails adaptándolo a nuestro idioma y zona horaria. Hacemos estos incluyendo las siguientes lineas en el archivo config/application.rb module MiApp class Application < Rails::Application ... # Establecer zona horaria config.time_zone = 'America/Tegucigalpa' # Establecer idioma, conf. regional config.i18n.default_locale = 'es' ...
  • 8. Hola Mundo en Rails 6. Crear un controlador llamado Paginas y una acción inicio. # 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" end end 7. Crear una plantilla HTML llamada inicio.html.erb dentro de app/views/paginas <%= # Embebemos codigo de Ruby haciendo uso de los tags '<%=' y '%>' de forma similar a PHP %> <h1><%= @mensaje %></h1>
  • 9. Hola Mundo en Rails 8. Por último mapeamos una URL a nuestro controlador en el ruteador MiApp::Application.routes.draw do # Especificamos nuestro controlador y acción separados mediante un simbolo de # match 'inicio' => 'paginas#inicio' ... end Ejecutando nuestra aplicación: Para probar nuestra aplicación primero debemos iniciar un servidor web, Rails ya viene incorporado con uno llamado Webrick.
  • 10. Hola Mundo en Rails Ejecutando nuestra aplicación (continuación): 1. Iniciar el servidor web ejecutando el siguiente comando dentro del directorio de nuestra app $ rails server 2. Ingresamos en un navegador web la URL que corresponde a la ruta que establecimos. Webrick escucha por defecto en el puerto 3000 http://localhost:3000/inicio La página web resultante debería mostrar el mensaje 'Hola Mundo'
  • 11. Entornos de ejecución en Rails Por defecto los nuevos proyectos de Rails vienen pre-configurados con tres (3) entornos de ejecución, 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 creación Pruebas. Se usa para la ejecución de los casos de prueba. Útil en Test Driven Development (TDD) Producción. Utilizado durante la ejecución en vivo o antes los usuarios reales.
  • 12. Resources (Recursos) y REST REST (acrónimo de Transferencia de Estado Representacional) es un estilo de arquitectura de software para Web. Rails hace uso intensivo de esta técnica para representar recursos/objetos -por ejemplo: entidades de datos- y realizar operaciones CRUD (Create/Read/Update/Delete) sobre los mismos. En este contexto REST básicamente es un esquema de URLs y métodos HTTP que representan operaciones (leer, crear, actualizar, ver nómina, etc) sobre un recurso, digamos, un Empleado.
  • 13. Resources (Recursos) y REST Operación Ruta Método HTTP Ingresar datos /empleados/new GET Crear registro /empleados POST Leer /empleados/1 GET Modificar datos /empleados/1/edit GET Actualizar registro /empleados/1 PUT Eliminar registro /empleados/1 DELETE Listar todos /empleados GET Rutas por defecto creadas por Rails para el recurso Empleado Como pueden observar las operaciones que requieren de una interfaz gráfica y no modifican el estado de un recurso (ingresar y actualizar datos, leer, listar) utilizan el método GET. Las demás operaciones que si modifican estados, utilizan el resto de los métodos.
  • 14. Resources (Recursos) y REST Registrar un Recurso en Rails Solamente necesitamos abrir el archivo de rutas (ubicado en config/routes.rb) y agregar la siguiente linea: MiApp::Application.routes.draw do ... resources :empleados ... end Esto hace que Rails automáticamente cree rutas y métodos de ayuda para las siete operaciones descritas anteriormente. Además es posible incorporar nuevas fácilmente.
  • 15. Creación de un modelo de datos Virtualmente todas las aplicaciones web necesitan acceder a un almacén de datos que les permita recuperar información persistente y generar contenido dinámico. La M de Modelo en MVC hace alusión a esto, al modelo de datos subyacente. En Rails esto se gestiona a través de un módulo del núcleo 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 convención sobre configuración.
  • 16. Creación de un modelo de datos Otro aspecto importante es que Rails permite realizar operaciones genéricas 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.yml YML es un lenguaje utilizado por Rails para almacenar configuraciones de una forma más simple.
  • 17. Creación de un modelo de datos development: adapter: sqlite3 database: db/development.sqlite3 pool: 5 timeout: 5000 test: ... production: ... 2. Crear el modelo y migración de nuestra base de datos. Tomemos un ejemplo simple de una aplicación de blogs:
  • 18. Creación de un modelo de datos Ejecutamos los siguientes comandos: $ rails generate model Entrada titulo:string contenido:string $ rails generate model Comentario texto:string entrada_id:integer 3. Editar la migración generada por Rails, adaptándola a nuestras necesidades 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, :id end
  • 19. Creación de un modelo de datos 3. Ejecutar la migración y por ende la creación de las respectivas tablas $ rake db:migrate 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 también existen otras alternativas libres
  • 20. Creación de un modelo de datos 4. Abrimos los modelos de Active Record generados previamente y agregamos relaciones, validaciones y otras conf. necesarias class Entrada < ActiveRecord::Base alias_attribute :fecha_publicacion, :created_at has_many :comentarios validates :titulo, :length => 10..80 validates :contenido, :length => { :maximum => 255 }, :presence => true end class Comentario < ActiveRecord::Base alias_attribute :fecha_publicacion, :created_at belongs_to :entrada validates :texto, :length => { :maximum => 255 }, :presence => true validates :entrada, :presence => true end
  • 21. 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
  • 22. 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 ... end end
  • 23. Almacenamiento de registros 3. Creamos las respectivas plantillas o vistas. Es importante señalar que Rails utiliza layouts los cuales son plantillas que por defecto se aplican a todas las acciones, aquí ponemos elementos de diseño que se repiten en todas las páginas. 3.1 Modificamos el layout por defecto para incluir el título de nuestras páginas y una caja de mensajes. <html> <head>...</head> <body> <h1><%= @titulo_pagina %></h1> <% #incluimos otra plantilla para mostrar mensajes %> <%= render 'shared/mensajes' %> <%= yield %> </body> </html>
  • 24. Almacenamiento de registros 3.2 Creamos la vista del formulario de ingreso en app/views/entradas/new.html.erb <%= render 'shared/validaciones', :entidad => @entrada %> <%= form_for @entrada do |f| %> <%= f.label :titulo, 'Título:' %><br /> <%= f.text_field :titulo %><br /><br /> <%= f.label :contenido, 'Contenido:' %><br /> <%= f.text_area :contenido, :size => '80x6' %><br /> <%= f.submit 'Guardar' %> <% end %>
  • 25. Almacenamiento de registros 3.3. Ahora creamos la plantilla que mostrará la información de cada entrada en app/views/entradas/show.html.erb <%= render 'shared/validaciones', :entidad => @nuevo_comentario %> <h3 class='titulo'>Título: <%= @entrada.titulo %></h3> <strong>Contenido</strong><br /> <p><%= @entrada.contenido %></p> <%= link_to 'Ir a lista de entradas', entradas_path %>
  • 26. Incluyendo comentarios 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 acción create. class ComentariosController < ApplicationController # Insertar comentario en BD def create ... end end
  • 27. Incluyendo comentarios 2. Modificamos la plantilla de entradas, ya que desde cada entrada se podrán ver y asociar nuevos comentarios. <div id="comentarios"> <h2>Comentarios</h2> <%= form_for @nuevo_comentario do |f| %> <%= f.label :texto, 'Nuevo Comentario' %><br /> <%= f.text_area :texto, :size => '60x4' %><br /> <%= f.hidden_field :entrada_id, :value => @entrada.id%> <%= f.submit 'Enviar' %> <% end %> <h3>Mostrando <%= pluralize @comentarios.count, 'comentario' %></h3> <% @comentarios.each do |comentario| %> <em>Publicado a las <%= comentario.fecha_publicacion.strftime("%I:%M %p") %></em> <%= comentario.texto %> <% end %> </div>
  • 28. Incluyendo comentarios Algunas observaciones con respecto a la plantilla anterior: Hemos incluido un hidden field que envía el ID de la entrada relacionada. Utilizamos el método pluralize que permite mostrar una frase en plural o singular según 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 método llamado strftime que permite especificar el formato en que se mostrará la fecha.
  • 29. Referencias Sitio oficial de Ruby en español: http://www.ruby-lang.org/es/ Sitio web oficial de Rails: http://rubyonrails.org Rails Casts: http://railscasts.com Libros recomendados Ruby on Rails Tutorial (Gratis): http://ruby.railstutorial.org The Rails 3 Way por Obie Fernández
  • 30. Gracias por su atención Esta presentación se encuentra disponible en: www.slideshare.net/Socrattes Pueden descargar el código fuente en: github.com/Socrattes2099/RubyOnRails-FLISOL