Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Marchando sobre Rieles
1. Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay
Ruby On Rails 3.0.0
Carmen Diaz Echauri
cdechauri@gmail.com
2. 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
3. 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
4. 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
5. 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
6. $ rails new jugando
Preparado por Carmen Diaz Echauri.
UCA, Asuncion - Paraguay
7. 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
8. 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
9. Preparado por Carmen Diaz Echauri.
UCA, Asuncion - Paraguay
Vistas
(views)
Controlador
es
(controllers)
Modelos
(models)
Database
1-Envia el request
2-Obtiene datos/actualizaciones3- Genera la vista
4-Envia HTML de vuelta
11. 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
12. 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.
13. $ 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
14. 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
15. 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.
16. 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)
19. 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.
20. Preparado por Carmen Diaz Echauri.
UCA, Asuncion - Paraguay
* Grafico preparado por RubyFocus http://www.rubyfocus.biz
21. 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
22. 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
23. 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
24. 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
25. Preparado por Carmen Diaz Echauri.
UCA, Asuncion - Paraguay
Luego prepara el entorno con:
$ rake db:migrate
$ rake db:test:prepare
$ rake spec
$ rake cucumber
26. 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
27. Preparado por Carmen Diaz Echauri.
UCA, Asuncion - Paraguay
Confusión en la
lectura.
No es intuitivo
Rspec vs Unit::test
Output no es descriptivo
28. 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
29. $ 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
30. 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
31. 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