31
MARCHANDO SOBRE RIELES Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri [email protected]

Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri [email protected]

Embed Size (px)

Citation preview

Page 1: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

MARCHANDO SOBRE RIELES

Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay

Ruby On Rails 3.0.0

Carmen Diaz [email protected]

Page 2: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

Agenda

Esta charla / demo esta enfocado a personas que ya sepan algo de programacion en otros lenguajes. No es necesario saber ruby

Nociones basicas Estructura / Esqueleto MVC en action Obs, no es un tutorial

Exploracion de procesos de desarrollo TDD BDD Experiencia personal

Page 3: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

Ruby / RoR

“ Ruby es un lenguaje de programación interpretado y orientado a objetos inventado por Yukihiro Matsumoto a comienzos de los 90’s. “

Open source DRY Sintaxis. Lenguaje flexible e intuitivo,

interpretado por humanos y maquinas. Patrones Comunes

Page 4: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

Un framework facilita al programador clases que implementan funcionalidades comunes en las aplicaciones web, incluyendo: abstraciones en las base de datos (queries, independientemente de cual BD se este utilizando), plantillas, url amigables, etc.

ROR => Framework

“Rails es un Framework o un conjunto de librerias diseñado para crear aplicaciones web escrito en Ruby.”

DRY (ya que esta basado en Ruby) Basado en convenciones y anotaciones, en vez

de configuraciones. Desarrollo Agil Full stack testing framework

Page 5: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

… . . . .Originado como una aplicacion de manejo de hosts, llamado Basecamp por David Heinemeier Hanson (HDD) para la empresa 37signals.

Rails fue extraido como un framework de una real aplicacion en uso, para poder utilizarlo en el desarrollo de otras aplicaciones que la empresa 37signals tenia en mente.

BetaJuly 2004

Version 1.0Dic 2005

Version 2.0Dic 2007

Version 2.xDic 2008

Version 3.0.029 Agosto 2010

Page 6: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

Esqueleto$ rails new jugando

Page 7: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

File/Directorio Proposito

README Breve instruccion de tu aplicacion.

Rakefile Este file contiene batch jobs que pueden ser corridos desde la terminal.

app/ Contiene los controladores, modelos y vistas de la aplicacion.

config/ Configuracion de la aplicacion como base de datos, ruteadores, etc.

db/ Muestra la actual estructura de la base de datos, asi como las migraciones.

doc/ Documentacion de tu aplicacion.

lib/ Modules extendidos de la aplicacion.

log/ Log files

public/ Directorio que es publico para todos. Aqui van las imagenes, JavaScript, stylesheets (CSS), y otras paginas estaticas.

script/ Scripts otorgado por Rails para ciertos tasks.

spec/ Unit tests, fixtures, y otros test.

tmp/ Archivos temporales

vendor/ Codigos externos.

Esqueleto

Page 8: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

Entornos &BD Configuracion

La separacion de los diferentes entornos se refleja en la configuracion de la BD. config/database.yml contiene la configuracion de la BD.

Por defecto Rails usa SQLite

Cada entorno tiene su propia DB

Page 9: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

Model View Controller

Vistas(views)

Controladores

(controllers)

Modelos(models)

Database

1-Envia el request

2-Obtiene datos/actualizaciones3- Genera la vista

4-Envia HTML de vuelta

Page 10: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

Scaffolding $ rails generate scaffold juego titulo:string descripcion:text url:string

$ rake db:migrate

Page 11: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

MVC en accion

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

index.html.erbjuegos_controller.r

b Juego.rb

DB

1- /juegos

3- Juego.all

4- Genera la vista

2 – routea la accion index

@juegos

Rails routes

HTML

HTTP request

url Accion Proposito

GET /juegos Index Pagina que lista todos los juegos

Page 12: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

MVC en accion …

Jugando::Application.routes.draw do get "paginas/home" get "paginas/contact" resources :juegos #end

Esta regla mapea las acciones home y contact en el controlador “paginas”

Mapea el recurso con operaciones CRUD del BD

REST Representational State TransferMapeo entre HTTP verbs y los Urls y las acciones en los controladores.

Page 13: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

Rails Web en 6 Pasos básicos

$ rails new jugando $ vim Gemfile

source 'http://rubygems.org' gem 'rails', '3.0.0’ gem 'sqlite3-ruby', '1.2.5', :require => 'sqlite3'

$ bundle install $ rails generate scaffold juego

titulo:string descripcion:text url:string $ rake db:create # si la BD no es sqlite $ rake db:migrate

Page 14: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

Librerias - Manifiesto

En versiones anteriores al 3.0.0 instalabamos las gemas en el system.

$ [sudo] gem install rails --version 2.3.8 $ [sudo] gem install rspec-rails --version 1.3.2$ [sudo] gem install sqlite3-ruby --version 1.3.1….Tambien en el config/environment.rbRails::Initializer.run do |config|

config.gem "factory_girl", :source => http://gemcutter.org….

endO bien utilizabamos .gems• will_paginate --version ">= 2.3.11" --source

http://gemcutter.org• factory_girl --source "http://gemcutter.org

Page 15: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

LibreriasBundler. Una Gema entre Gemas.Bundler nos permite manejar librerias y sus dependencias de forma sencilla y a nivel aplicaciones.

Page 16: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

TDD test-driven development

Desarrollo Basado en Pruebas se escribe pruebas primero antes que el

código de la aplicación. Prueba primero, implementación despues.

datos Pruebas de controladores

Pruebas de modelos

Integracionde controladores

Performance(memoria, velocidad)

Page 17: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

Pruebas Unitarias – Unit Test

Page 18: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

Pruebas Basadas en el Comportamiento

Se aplica a todos los niveles de estructura

Enfoque en las interacciones entre personas y sistemas / objetos.

Combinación de TDD Test Driven DevelopmentATDD Acceptance Test Drive DevelopmentDDD Domain Driven Design.

Enfoque principal en el comportamiento, en lugar de la estructura.

Page 19: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

Pruebas Unitarias – Unit Test

Page 20: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

Testing en Capas

* Grafico preparado por RubyFocus http://www.rubyfocus.biz

Page 21: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

RSpec

Rspec provee un Dominio Especifico del Lenguaje –DSL - para un comportamiento especifico de objetos.

En Gemfile agregar las siguientes gemas

Page 22: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

RSpec

Pretende describir el comportamiento de la aplicación como si estuvieramos hablando con un cliente o otro programador.

Tu / Vos => Describe <representa el escenario>Cuando, como, circunstancias => Context “when ….” Alguien mas => It “should.. “ <describe el comportamiento deseado>

$ rails generate rspec:install create .rspec create spec create spec/spec_helper.rb create autotest create autotest/discover.rb

Page 23: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

Rspec…Plantilla generada al ejecutar $ generate controller Paginas

* Nota: solo si fue ejecutado con anterioridad: $ rails generate rspec:install

Page 24: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

CucumberCucumber soporta colaboración entre el dueno de la aplicacion (stakeholders) y el equipo de desarrolladores, con el proposito de desarrollar un entendimiento comun de los requerimientos

Page 25: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

Cucumber ….

Luego prepara el entorno con:$ rake db:migrate $ rake db:test:prepare$ rake spec $ rake cucumber

Page 26: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

Una miradita a cucumber Se definen los steps definitions Se escriben los features, que seria un la

especificación del requerimiento desde la perspectiva de la persona que usa el sist.

Page 27: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

Experiencia personal

Confusión en la lectura.No es intuitivo

Rspec vs Unit::test

Output no es descriptivo

Page 28: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

Experiencia personalRspec vs Unit::test

La sintaxis es clara aun sabiendo solo Ingles básico

Fácil de Leer y entender

Page 29: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

En Resumen => 10 Pasitos básicos

$ rails new jugando $ vim Gemfile (crear el archivo con las gemas

necesarias) Ejemplo Gemfile: http://gist.github.com/623305

$ bundle install $ rails generate rspec:install $ rails generate scaffold juego titulo:string

descripcion:text url:string $ rake db:migrate $ rails generate controller Paginas home contact $ rails generate resource voto juego_id:integer

Page 30: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

Agradecimientos

Wolfram Arnold http://www.rubyfocus.biz/

Images de http://theappera.com/ (iphone & ipad games) http://www.extranoticias.cl/ (ferrocarril chino)

Page 31: Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com

Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay

http://guides.rubyonrails.org http://rvm.beginrescueend.com/

Tips p/instalar en Windows http://juan-capristan.net/blog/?tag=rails-3-0-0

Instalar en os http://www.elsoftwarehamuerto.org/articulos/160 Google

Urls

Preguntas?