Download - Marchando sobre Rieles
![Page 1: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/1.jpg)
Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay
Ruby On Rails 3.0.0
Carmen Diaz Echauri [email protected]
![Page 2: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/2.jpg)
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
Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
![Page 3: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/3.jpg)
Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
“ 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: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/4.jpg)
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.
Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
“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: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/5.jpg)
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.
Beta July 2004
Version 1.0 Dic 2005
Version 2.0 Dic 2007
Version 2.x Dic 2008
Version 3.0.0 29 Agosto 2010
![Page 6: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/6.jpg)
$ rails new jugando
Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
![Page 7: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/7.jpg)
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. Preparado por Carmen Diaz Echauri.
UCA, Asuncion - Paraguay
![Page 8: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/8.jpg)
Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
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: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/9.jpg)
Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
Vistas (views)
Controladores
(controllers)
Modelos (models)
Database
1-Envia el request
2-Obtiene datos/actualizaciones 3- Genera la vista
4-Envia HTML de vuelta
![Page 10: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/10.jpg)
Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
$ rails generate scaffold juego titulo:string descripcion:text url:string
$ rake db:migrate
![Page 11: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/11.jpg)
Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
index.html.erb juegos_controller.rb 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: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/12.jpg)
Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
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 Transfer Mapeo entre HTTP verbs y los Urls y las acciones en los controladores.
![Page 13: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/13.jpg)
$ 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
Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
![Page 14: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/14.jpg)
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.rb Rails::Initializer.run do |config|
config.gem "factory_girl", :source => http://gemcutter.org ….
end O bien utilizabamos .gems • will_paginate --version ">= 2.3.11" --source http://gemcutter.org • factory_girl --source "http://gemcutter.org
Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
![Page 15: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/15.jpg)
Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
Bundler. Una Gema entre Gemas. Bundler nos permite manejar librerias y sus dependencias de forma sencilla y a nivel aplicaciones.
![Page 16: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/16.jpg)
Desarrollo Basado en Pruebas se escribe pruebas primero antes que el código de la
aplicación. Prueba primero, implementación despues.
Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
datos Pruebas de controladores
Pruebas de modelos
Integracion de controladores
Performance (memoria, velocidad)
![Page 17: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/17.jpg)
Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
![Page 18: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/18.jpg)
Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
![Page 19: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/19.jpg)
Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
⇒ Se aplica a todos los niveles de estructura
⇒ Enfoque en las interacciones entre personas y sistemas / objetos.
⇒ Combinación de TDD Test Driven Development ATDD Acceptance Test Drive Development DDD Domain Driven Design.
⇒ Enfoque principal en el comportamiento, en lugar de la estructura.
![Page 20: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/20.jpg)
Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
* Grafico preparado por RubyFocus http://www.rubyfocus.biz
![Page 21: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/21.jpg)
Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
Rspec provee un Dominio Especifico del Lenguaje –DSL - para un comportamiento especifico de objetos.
En Gemfile agregar las siguientes gemas
![Page 22: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/22.jpg)
Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
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: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/23.jpg)
Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
Plantilla generada al ejecutar $ generate controller Paginas
* Nota: solo si fue ejecutado con anterioridad: $ rails generate rspec:install
![Page 24: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/24.jpg)
Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
Cucumber 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: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/25.jpg)
Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
Luego prepara el entorno con: $ rake db:migrate $ rake db:test:prepare $ rake spec $ rake cucumber
![Page 26: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/26.jpg)
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.
Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
![Page 27: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/27.jpg)
Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
Confusión en la lectura. No es intuitivo
Rspec vs Unit::test
Output no es descriptivo
![Page 28: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/28.jpg)
Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
Rspec vs Unit::test
La sintaxis es clara aun sabiendo solo Ingles básico
Fácil de Leer y entender
![Page 29: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/29.jpg)
$ 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 gen $ 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
Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
![Page 30: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/30.jpg)
Wolfram Arnold http://www.rubyfocus.biz/
Images de http://theappera.com/ (iphone & ipad games) http://www.extranoticias.cl/ (ferrocarril chino)
Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
![Page 31: Marchando sobre Rieles](https://reader035.vdocuments.mx/reader035/viewer/2022081720/5592ac621a28abe3548b47a2/html5/thumbnails/31.jpg)
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
Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay