Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay
Ruby On Rails 3.0.0
Carmen Diaz Echaur...
  Esta charla / demo esta enfocado a personas
que ya sepan algo de programacion en otros
lenguajes. No es necesario saber...
Preparado por Carmen Diaz Echauri.
UCA, Asuncion - Paraguay
“ Ruby es un lenguaje de programación interpretado y
orientado...
Un framework facilita al programador clases que
implementan funcionalidades comunes en las aplicaciones
web, incluyendo: a...
Preparado por Carmen Diaz Echauri.
UCA, Asuncion - Paraguay
Originado como una aplicacion de manejo de hosts, llamado
Base...
$ rails new jugando
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...
Preparado por Carmen Diaz Echauri.
UCA, Asuncion - Paraguay
La separacion de los diferentes entornos se refleja en la
conf...
Preparado por Carmen Diaz Echauri.
UCA, Asuncion - Paraguay
Vistas
(views)
Controlador
es
(controllers)
Modelos
(models)
D...
Preparado por Carmen Diaz Echauri.
UCA, Asuncion - Paraguay
$ rails generate scaffold juego titulo:string descripcion:text...
Preparado por Carmen Diaz Echauri.
UCA, Asuncion - Paraguay
index.html.erb
juegos_controller.rb
Juego.rb
DB
1- /juegos
3- ...
Preparado por Carmen Diaz Echauri.
UCA, Asuncion - Paraguay
Jugando::Application.routes.draw do
get "paginas/home"
get "pa...
  $ rails new jugando
  $ vim Gemfile
  source 'http://rubygems.org'
  gem 'rails', '3.0.0’
  gem 'sqlite3-ruby', '1....
  En versiones anteriores al 3.0.0 instalabamos las gemas en el
system.
$ [sudo] gem install rails --version 2.3.8
$ [sud...
Preparado por Carmen Diaz Echauri.
UCA, Asuncion - Paraguay
Bundler. Una Gema entre Gemas.
Bundler nos permite manejar lib...
  Desarrollo Basado en Pruebas
  se escribe pruebas primero antes que el código de la
aplicación.
  Prueba primero, imp...
Preparado por Carmen Diaz Echauri.
UCA, Asuncion - Paraguay
Preparado por Carmen Diaz Echauri.
UCA, Asuncion - Paraguay
Preparado por Carmen Diaz Echauri.
UCA, Asuncion - Paraguay
⇒ Se aplica a todos los niveles de
estructura
⇒ Enfoque en las...
Preparado por Carmen Diaz Echauri.
UCA, Asuncion - Paraguay
* Grafico preparado por RubyFocus http://www.rubyfocus.biz
Preparado por Carmen Diaz Echauri.
UCA, Asuncion - Paraguay
Rspec provee un Dominio Especifico del
Lenguaje –DSL - para un...
Preparado por Carmen Diaz Echauri.
UCA, Asuncion - Paraguay
Pretende describir el comportamiento de la aplicación como si
...
Preparado por Carmen Diaz Echauri.
UCA, Asuncion - Paraguay
Plantilla generada al ejecutar $ generate controller Paginas
*...
Preparado por Carmen Diaz Echauri.
UCA, Asuncion - Paraguay
Cucumber soporta colaboración entre el dueno de la
aplicacion ...
Preparado por Carmen Diaz Echauri.
UCA, Asuncion - Paraguay
Luego prepara el entorno con:
$ rake db:migrate
$ rake db:test...
  Se definen los steps definitions
  Se escriben los features, que seria un la especificación del
requerimiento desde la...
Preparado por Carmen Diaz Echauri.
UCA, Asuncion - Paraguay
Confusión en la
lectura.
No es intuitivo
Rspec vs Unit::test
O...
Preparado por Carmen Diaz Echauri.
UCA, Asuncion - Paraguay
Rspec vs Unit::test
La sintaxis es clara aun
sabiendo solo Ing...
  $ rails new jugando
  $ vim Gemfile (crear el archivo con las gemas
necesarias)
  Ejemplo Gemfile: http://gist.github...
  Wolfram Arnold
  http://www.rubyfocus.biz/
  Images de
  http://theappera.com/ (iphone & ipad games)
  http://www.e...
  http://guides.rubyonrails.org
  http://rvm.beginrescueend.com/
  Tips p/instalar en Windows
  http://juan-capristan....
Upcoming SlideShare
Loading in …5
×

Marchando sobre Rieles

969
-1

Published on

Demo de Rails 3.0.0 para alumnos de la UCA

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
969
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Marchando sobre Rieles

  1. 1. Preparado por Carmen Diaz Echauri. Ingenieria Informatica, UCA. Asuncion - Paraguay Ruby On Rails 3.0.0 Carmen Diaz Echauri cdechauri@gmail.com
  2. 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. 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. 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. 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. 6. $ rails new jugando Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
  7. 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. 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. 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
  10. 10. Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay $ rails generate scaffold juego titulo:string descripcion:text url:string $ rake db:migrate
  11. 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. 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. 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. 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. 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. 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)
  17. 17. Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
  18. 18. Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay
  19. 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. 20. Preparado por Carmen Diaz Echauri. UCA, Asuncion - Paraguay * Grafico preparado por RubyFocus http://www.rubyfocus.biz
  21. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

×