SlideShare una empresa de Scribd logo
1 de 28
Descargar para leer sin conexión
Andrés Villagrán	

@avillagran
¿Que hago?
Desarrollador: 	

Web, Móvil, Juegos,Aplicaciones, Flash/FMS	

Algunos clientes:
París, Ripley, Easy, Canal 13, Claro, Entel, Johnnie Walker, 	

Land Rover, IDEAL, Cristal, Nike, Brooks, entre otros.
Director de Desarrollo
RicardoVelasco HR Strategic Partners
Pot.cl
Tienda Online	

Barros Arana 514 #27
RUBY
Intro rápida
RUBY
Escribiendo código
$ irb	

1.9.3-p448 :001 > p “Hola mundo”
Directamente en el interprete
$ ruby nombre_archivo.rb
Utilizando archivos
RUBY
Variables
variable_local = "valor"!
@variable_global = 1!
CONSTANTE = 2!
!
!
@variable_global = "reutilizando"!
RUBY
arr = [200, 30, "Uno", "Dos"]!
!
# Primer valor!
arr.first!
# Segundo valor!
arr.second!
# Último valor!
arr.last!
!
# Recorrer e imprimir!
arr.each{|x| p x}!
# resultado:!
# 200!
# 30!
# "Uno"!
# "Dos"!
!
!
# Utilizando bloques!
arr.each do |x|!
# Los paréntesis no son obligatorios!
if x.class == String !
p(x) # Podría ser p x!
end!
end!
# resultado:!
# "Uno"!
# "Dos"!
!
# One-liner!
# Recorrer e imprimir sólo Strings!
arr.each{|x| p(x) if x.class == String}!
# resultado:!
# "Uno"!
# "Dos"!
Arreglos
RUBY
ejemplo = {prueba: 'de', !
! ! ! hash: true}!
ejemplo.length!
# resultado:!
# 2!
!
arr = [{uno: 1, dos: 2}, !
{uno: 2, dos: 3},!
{:uno => 3, :dos => 4} !
! ! # Formato 'tradicional'!
]!
Hash
# Ejemplos de one-liner!
!
# Imprimir atributos!
arr.each{|x| p x[:uno]}!
# resultado:!
# 1!
# 2!
# 3"
# Imprimir con índices!
arr.each_with_index{|v, k| p "idx: #{k} valor: #{v}"}!
# resultado:!
# "idx: 0 valor: {:uno=>1, :dos=>2}"!
# "idx: 1 valor: {:uno=>2, :dos=>3}"!
# "idx: 2 valor: {:uno=>3, :dos=>4}"!
!
# Buscar con un valor en los atributos!
arr.select{|x| x[:uno] == 2}!
# resultado:!
# [{:uno=>2, :dos=>3}]
RUBY
verdad = true!
!
p(verdad ? 'Es verdad' : 'Es mentira’)!
!
p "Verdad" if verdad # One-liner!
!
unless verdad!
p "Mentira"!
else!
p "Verdad"!
end!
!
if verdad.eql? true!
p "Verdad"!
elsif verdad.class == Fixnum!
p "Es un número..."!
else!
p "Mentira"!
end!
Condicionales
RUBY
arreglo = [2, 4, 6, 8, 10]!
!
for v in arreglo!
p "valor: #{v}"!
end!
!
i = 0!
while i < arreglo.length do!
p i!
i += 1!
end!
Loops
PADRINO
Capisci?
PADRINO
• Padrino utiliza como base Sinatra
require 'rubygems'!
require 'sinatra'!
!
get '/' do!
"HOLA MUNDO<br /><strong>ES SIMPLE</strong>"!
end!
• Para instalar sinatra:
$ gem install sinatra
• Ejecutar servidor:
$ ruby archivo.rb!
== Sinatra/1.4.5 has taken the stage on 4567 for development with backup from Thin!
>> Thin web server (v1.5.1 codename Straight Razor)!
>> Maximum connections set to 1024!
>> Listening on localhost:4567, CTRL+C to stop
PADRINO
• Un Framework Web en Ruby	

• Construido sobre Sinatra	

• Bastante completo, parecido a Rails	

• Agnóstico	

• Rápido	

• Liviano	

• Interfaz de administración (parecido a Django)	

• Modular
PADRINO
• MVC para Sinatra	

• Generadores para crear proyectos con elección
de componentes (ORM, Javascript,Testing, CSS, etc)	

• Compatible con Rack	

• Simplicidad en declaración de rutas (va en los
controladores)
PADRINO
• Adaptadores: mysql, postgres, sqlite	

• ORM: mongoid, activerecord, minirecord, datamapper, couchrest,
mongomatic, mongomapper, ohm, ripple, sequel, dynamoid	

• Renderers: erb, erubis, haml, slim, liquid	

• Scripts: prototype, rightjs, jquery, mootools, extcore, dojo	

• Hojas de estilo: Less, Sass	

• Testing: bacon, shoulda, cucumber, riot, rspec, minitest, steak
Lista completa: http://www.padrinorb.com/guides/generators
Agnóstico
PADRINO
Instalación
$ sudo gem install padrino	

$ padrino g project proyecto -d datamapper -e haml -a mysql -b	

$ cd proyecto	

$ padrino start
En OS X da un error, se corrige:
gem install do_mysql --  --with-mysql-dir=/usr/local/mysql --with-mysql-
lib=/usr/local/mysql/lib --with-mysql-include=/usr/local/mysql/include
Luego
$ bundle install
PADRINO
Instalación
Para no tener problemas con UTF8
I18n.default_locale = :es!
Padrino.after_load do!
Encoding.default_internal = nil!
DataMapper.finalize!
end!
config/boot.rb
PADRINO
Primeros pasos
$ padrino g controller Users get:index get:new post:create
Crear controlador
Crear vistas en app/views/users
• index.haml	

• new.haml
Agregar en app/controllers/users.rb en cada método:
• render ‘users/index’	

• render ‘users/new’
PADRINO
Primeros pasos
app/views/layouts/application.haml
Crear y editar layout
¿HTML? Nah… más simple y fácil de mantener HAML
PADRINO
Primeros pasos
!!!!
%html{lang: "es"}!
%head!
%meta{charset: "utf-8"}/!
%title Padrino!
%link{href: "http://getbootstrap.com/dist/css/bootstrap.min.css",
rel: "stylesheet", type: "text/css"}/!
%body!
.container!
.row!
.col-md-12!
= yield!
app/views/layouts/application.haml
PADRINO
Modelos y DataMapper
Los modelos para tu sub-aplicación se definen en
app/models/
Y si lo necesitas para todas tus sub-aplicaciones
models/
Los modelos representan:
• Una o varias tablas en una o más bases de datos
en uno o distintos motores de bases de datos
• Servicios web
• Datos estáticos
PADRINO
Modelos y DataMapper
Definir modelo ¿en una línea?
$ padrino g model User name:String age:Integer!
# apply orms/datamapper!
# create models/user.rb!
# create db/migrate/001_create_users.rb!
El generador crea:
Modelo (models/user.rb)
Migración (db/migrate/001_create_users.rb)
PADRINO
Modelos y DataMapper
Modelo
class User!
include DataMapper::Resource!
# No incluye timestamps por defecto!
include DataMapper::Timestamp !
!
!
property :id, Serial!
property :name, String!
property :age, Integer!
!
# Utilizaremos created_at y updated_at!
timestamps :at!
!
end!
PADRINO
Modelos y DataMapper
Configurar conexión a bases de datos en
config/database.rb
case Padrino.env!
when :development then DataMapper.setup(:default, "mysql://root@localhost/proyecto_dev")!
when :production then DataMapper.setup(:default, "mysql://root@localhost/proyecto_prod")!
when :test then DataMapper.setup(:default, "mysql://root@localhost/proyecto_test")!
end!
Permite configurar bases de datos según el entorno
PADRINO
Modelos y DataMapper
2 Opciones:
$ rake dm:auto:migrate
Generar tablas según modelos
Destruye existentes, crea tablas y relaciones
$ rake dm:auto:upgrade
Crea o actualiza tablas (no crea relaciones ni elimina columnas)
$ rake dm:migrate
Generar tablas a partir de las migraciones
PADRINO
Modelos y DataMapper
Obtener todos
@user = User.all!
Consultas varias al modelo
# Obtener según ID!
User.get 1 !
# El primero según una condición!
User.first name: 'Andrés'!
# Los que cumplan las condiciones!
# gt = Mayor que !
# gte = Mayor o igual a!
# lt = Menor que!
# lte = Menor o igual a!
User.all :age.gt => 10, :age.lte => 20!
# Likes y orden?!
# asc = Ascendente!
# desc = Descendente!
User.all :name.like => '%nd%', order: :name.asc!
PADRINO
Como se aplica al proyecto
PADRINO
Presentación:
http://google.cl
Código proyecto:
https://github.com/avillagran/padrino-codecamp
Andrés Villagrán
@avillagran
http://github.com/avillagran
2014 04 padrino

Más contenido relacionado

Destacado

Badges101webinar mozilla slides_v1.0
Badges101webinar mozilla slides_v1.0Badges101webinar mozilla slides_v1.0
Badges101webinar mozilla slides_v1.0Erin Knight
 
zHome Signs 1
zHome Signs 1zHome Signs 1
zHome Signs 1zHome
 
2011 World Usability Day - Teresa Hodder - Chrysler Group LLC.
2011 World Usability Day - Teresa Hodder - Chrysler Group LLC.2011 World Usability Day - Teresa Hodder - Chrysler Group LLC.
2011 World Usability Day - Teresa Hodder - Chrysler Group LLC.Lextant
 
Group42powerpoint
Group42powerpointGroup42powerpoint
Group42powerpointssisemore
 
Group33 powerpoint
Group33 powerpointGroup33 powerpoint
Group33 powerpointssisemore
 
El Compromiso Social al que llama la Fe Cristiana
El Compromiso Social al que llama la Fe CristianaEl Compromiso Social al que llama la Fe Cristiana
El Compromiso Social al que llama la Fe CristianaPaulina Andrea Perez Perez
 
Inspiring Creativity - EPIC 2011 - Lextant
Inspiring Creativity - EPIC 2011 - LextantInspiring Creativity - EPIC 2011 - Lextant
Inspiring Creativity - EPIC 2011 - LextantLextant
 
Mozilla webmakers
Mozilla webmakersMozilla webmakers
Mozilla webmakersErin Knight
 
Pom boutique business plan
Pom boutique business planPom boutique business plan
Pom boutique business planMaria Pia
 
Actividad 2 de artistica
Actividad 2 de artisticaActividad 2 de artistica
Actividad 2 de artisticaSofia Lopera
 
Bath In The Cotswolds
Bath In The CotswoldsBath In The Cotswolds
Bath In The Cotswoldsadam eva
 
Web 1 (1) fianl
Web 1 (1) fianlWeb 1 (1) fianl
Web 1 (1) fianlingrythf
 
B tau arcos_gallardo_visperas
B tau arcos_gallardo_visperasB tau arcos_gallardo_visperas
B tau arcos_gallardo_visperassarahcrld
 
Trabajo de sistemas administrativos
Trabajo de sistemas administrativosTrabajo de sistemas administrativos
Trabajo de sistemas administrativosCarlisMendez
 

Destacado (20)

Badges101webinar mozilla slides_v1.0
Badges101webinar mozilla slides_v1.0Badges101webinar mozilla slides_v1.0
Badges101webinar mozilla slides_v1.0
 
zHome Signs 1
zHome Signs 1zHome Signs 1
zHome Signs 1
 
2011 World Usability Day - Teresa Hodder - Chrysler Group LLC.
2011 World Usability Day - Teresa Hodder - Chrysler Group LLC.2011 World Usability Day - Teresa Hodder - Chrysler Group LLC.
2011 World Usability Day - Teresa Hodder - Chrysler Group LLC.
 
The internet
The internetThe internet
The internet
 
Group42powerpoint
Group42powerpointGroup42powerpoint
Group42powerpoint
 
Group33 powerpoint
Group33 powerpointGroup33 powerpoint
Group33 powerpoint
 
Everyday english
Everyday englishEveryday english
Everyday english
 
El Compromiso Social al que llama la Fe Cristiana
El Compromiso Social al que llama la Fe CristianaEl Compromiso Social al que llama la Fe Cristiana
El Compromiso Social al que llama la Fe Cristiana
 
Caso PENTA y SQM
Caso PENTA y SQMCaso PENTA y SQM
Caso PENTA y SQM
 
Inspiring Creativity - EPIC 2011 - Lextant
Inspiring Creativity - EPIC 2011 - LextantInspiring Creativity - EPIC 2011 - Lextant
Inspiring Creativity - EPIC 2011 - Lextant
 
Mozilla webmakers
Mozilla webmakersMozilla webmakers
Mozilla webmakers
 
Pom boutique business plan
Pom boutique business planPom boutique business plan
Pom boutique business plan
 
Actividad 2 de artistica
Actividad 2 de artisticaActividad 2 de artistica
Actividad 2 de artistica
 
Uma certa aracy
Uma certa aracyUma certa aracy
Uma certa aracy
 
Hooters Baja
Hooters BajaHooters Baja
Hooters Baja
 
Bath In The Cotswolds
Bath In The CotswoldsBath In The Cotswolds
Bath In The Cotswolds
 
Web 1 (1) fianl
Web 1 (1) fianlWeb 1 (1) fianl
Web 1 (1) fianl
 
B tau arcos_gallardo_visperas
B tau arcos_gallardo_visperasB tau arcos_gallardo_visperas
B tau arcos_gallardo_visperas
 
Trabajo de sistemas administrativos
Trabajo de sistemas administrativosTrabajo de sistemas administrativos
Trabajo de sistemas administrativos
 
Documento español
Documento españolDocumento español
Documento español
 

Similar a 2014 04 padrino

Timerepublik
TimerepublikTimerepublik
Timerepublikbetabeers
 
Java script para desarrolladores SharePoint
Java script para desarrolladores SharePointJava script para desarrolladores SharePoint
Java script para desarrolladores SharePointAdrian Diaz Cervera
 
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)lenny
 
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)INSIGNIA4U
 
Herramientas para desarrollar rápidamente
Herramientas para desarrollar rápidamenteHerramientas para desarrollar rápidamente
Herramientas para desarrollar rápidamenteCarlos Toxtli
 
Mada metodología ágil de desarrollo de apis
Mada   metodología ágil de desarrollo de apisMada   metodología ágil de desarrollo de apis
Mada metodología ágil de desarrollo de apisCloudAppi
 
Lenguaje de programacion con soporte de base de datos
Lenguaje de programacion con soporte de base de datosLenguaje de programacion con soporte de base de datos
Lenguaje de programacion con soporte de base de datosSimoney Llamas
 
Desarrollo de Mobile Web Apps
Desarrollo de Mobile Web AppsDesarrollo de Mobile Web Apps
Desarrollo de Mobile Web AppsAsier Marqués
 
Desarrollo de Aplicaciones con Ruby on Rails y PostgreSQL
Desarrollo de Aplicaciones con Ruby on Rails y PostgreSQLDesarrollo de Aplicaciones con Ruby on Rails y PostgreSQL
Desarrollo de Aplicaciones con Ruby on Rails y PostgreSQLJosé Alfredo Ramírez
 
Presentacion Ruby on Rails CTIC-Cusco2007
Presentacion Ruby on Rails CTIC-Cusco2007Presentacion Ruby on Rails CTIC-Cusco2007
Presentacion Ruby on Rails CTIC-Cusco2007JuancaPompilla
 
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceARLa Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceARPablo Godel
 
1. Arquitecturas y Herramientas de Programación
1. Arquitecturas y Herramientas de Programación1. Arquitecturas y Herramientas de Programación
1. Arquitecturas y Herramientas de ProgramaciónLaura Folgado Galache
 
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos AiresPresentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Airespeterpunk
 
Primeros pasos de una aplicación web - Rails Girls Córdoba
Primeros pasos de una aplicación web - Rails Girls CórdobaPrimeros pasos de una aplicación web - Rails Girls Córdoba
Primeros pasos de una aplicación web - Rails Girls Córdobaquaip
 
Las buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones SymfonyLas buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones Symfonysymfony_bcn
 
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
 

Similar a 2014 04 padrino (20)

Timerepublik
TimerepublikTimerepublik
Timerepublik
 
Html5
Html5Html5
Html5
 
Java script para desarrolladores SharePoint
Java script para desarrolladores SharePointJava script para desarrolladores SharePoint
Java script para desarrolladores SharePoint
 
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
 
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
 
Introducción a Blazor
Introducción a BlazorIntroducción a Blazor
Introducción a Blazor
 
Herramientas para desarrollar rápidamente
Herramientas para desarrollar rápidamenteHerramientas para desarrollar rápidamente
Herramientas para desarrollar rápidamente
 
Mada metodología ágil de desarrollo de apis
Mada   metodología ágil de desarrollo de apisMada   metodología ágil de desarrollo de apis
Mada metodología ágil de desarrollo de apis
 
Lenguaje de programacion con soporte de base de datos
Lenguaje de programacion con soporte de base de datosLenguaje de programacion con soporte de base de datos
Lenguaje de programacion con soporte de base de datos
 
Ruby on Rails en Grandes Companias, Casos Reales
Ruby on Rails en Grandes Companias, Casos RealesRuby on Rails en Grandes Companias, Casos Reales
Ruby on Rails en Grandes Companias, Casos Reales
 
Desarrollo de Mobile Web Apps
Desarrollo de Mobile Web AppsDesarrollo de Mobile Web Apps
Desarrollo de Mobile Web Apps
 
Desarrollo de Aplicaciones con Ruby on Rails y PostgreSQL
Desarrollo de Aplicaciones con Ruby on Rails y PostgreSQLDesarrollo de Aplicaciones con Ruby on Rails y PostgreSQL
Desarrollo de Aplicaciones con Ruby on Rails y PostgreSQL
 
Presentacion Ruby on Rails CTIC-Cusco2007
Presentacion Ruby on Rails CTIC-Cusco2007Presentacion Ruby on Rails CTIC-Cusco2007
Presentacion Ruby on Rails CTIC-Cusco2007
 
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceARLa Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
 
1. Arquitecturas y Herramientas de Programación
1. Arquitecturas y Herramientas de Programación1. Arquitecturas y Herramientas de Programación
1. Arquitecturas y Herramientas de Programación
 
Qué es php
Qué es phpQué es php
Qué es php
 
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos AiresPresentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Aires
 
Primeros pasos de una aplicación web - Rails Girls Córdoba
Primeros pasos de una aplicación web - Rails Girls CórdobaPrimeros pasos de una aplicación web - Rails Girls Córdoba
Primeros pasos de una aplicación web - Rails Girls Córdoba
 
Las buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones SymfonyLas buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones Symfony
 
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
 

2014 04 padrino

  • 1.
  • 2. Andrés Villagrán @avillagran ¿Que hago? Desarrollador: Web, Móvil, Juegos,Aplicaciones, Flash/FMS Algunos clientes: París, Ripley, Easy, Canal 13, Claro, Entel, Johnnie Walker, Land Rover, IDEAL, Cristal, Nike, Brooks, entre otros. Director de Desarrollo RicardoVelasco HR Strategic Partners Pot.cl Tienda Online Barros Arana 514 #27
  • 4. RUBY Escribiendo código $ irb 1.9.3-p448 :001 > p “Hola mundo” Directamente en el interprete $ ruby nombre_archivo.rb Utilizando archivos
  • 5. RUBY Variables variable_local = "valor"! @variable_global = 1! CONSTANTE = 2! ! ! @variable_global = "reutilizando"!
  • 6. RUBY arr = [200, 30, "Uno", "Dos"]! ! # Primer valor! arr.first! # Segundo valor! arr.second! # Último valor! arr.last! ! # Recorrer e imprimir! arr.each{|x| p x}! # resultado:! # 200! # 30! # "Uno"! # "Dos"! ! ! # Utilizando bloques! arr.each do |x|! # Los paréntesis no son obligatorios! if x.class == String ! p(x) # Podría ser p x! end! end! # resultado:! # "Uno"! # "Dos"! ! # One-liner! # Recorrer e imprimir sólo Strings! arr.each{|x| p(x) if x.class == String}! # resultado:! # "Uno"! # "Dos"! Arreglos
  • 7. RUBY ejemplo = {prueba: 'de', ! ! ! ! hash: true}! ejemplo.length! # resultado:! # 2! ! arr = [{uno: 1, dos: 2}, ! {uno: 2, dos: 3},! {:uno => 3, :dos => 4} ! ! ! # Formato 'tradicional'! ]! Hash # Ejemplos de one-liner! ! # Imprimir atributos! arr.each{|x| p x[:uno]}! # resultado:! # 1! # 2! # 3" # Imprimir con índices! arr.each_with_index{|v, k| p "idx: #{k} valor: #{v}"}! # resultado:! # "idx: 0 valor: {:uno=>1, :dos=>2}"! # "idx: 1 valor: {:uno=>2, :dos=>3}"! # "idx: 2 valor: {:uno=>3, :dos=>4}"! ! # Buscar con un valor en los atributos! arr.select{|x| x[:uno] == 2}! # resultado:! # [{:uno=>2, :dos=>3}]
  • 8. RUBY verdad = true! ! p(verdad ? 'Es verdad' : 'Es mentira’)! ! p "Verdad" if verdad # One-liner! ! unless verdad! p "Mentira"! else! p "Verdad"! end! ! if verdad.eql? true! p "Verdad"! elsif verdad.class == Fixnum! p "Es un número..."! else! p "Mentira"! end! Condicionales
  • 9. RUBY arreglo = [2, 4, 6, 8, 10]! ! for v in arreglo! p "valor: #{v}"! end! ! i = 0! while i < arreglo.length do! p i! i += 1! end! Loops
  • 11. PADRINO • Padrino utiliza como base Sinatra require 'rubygems'! require 'sinatra'! ! get '/' do! "HOLA MUNDO<br /><strong>ES SIMPLE</strong>"! end! • Para instalar sinatra: $ gem install sinatra • Ejecutar servidor: $ ruby archivo.rb! == Sinatra/1.4.5 has taken the stage on 4567 for development with backup from Thin! >> Thin web server (v1.5.1 codename Straight Razor)! >> Maximum connections set to 1024! >> Listening on localhost:4567, CTRL+C to stop
  • 12. PADRINO • Un Framework Web en Ruby • Construido sobre Sinatra • Bastante completo, parecido a Rails • Agnóstico • Rápido • Liviano • Interfaz de administración (parecido a Django) • Modular
  • 13. PADRINO • MVC para Sinatra • Generadores para crear proyectos con elección de componentes (ORM, Javascript,Testing, CSS, etc) • Compatible con Rack • Simplicidad en declaración de rutas (va en los controladores)
  • 14. PADRINO • Adaptadores: mysql, postgres, sqlite • ORM: mongoid, activerecord, minirecord, datamapper, couchrest, mongomatic, mongomapper, ohm, ripple, sequel, dynamoid • Renderers: erb, erubis, haml, slim, liquid • Scripts: prototype, rightjs, jquery, mootools, extcore, dojo • Hojas de estilo: Less, Sass • Testing: bacon, shoulda, cucumber, riot, rspec, minitest, steak Lista completa: http://www.padrinorb.com/guides/generators Agnóstico
  • 15. PADRINO Instalación $ sudo gem install padrino $ padrino g project proyecto -d datamapper -e haml -a mysql -b $ cd proyecto $ padrino start En OS X da un error, se corrige: gem install do_mysql -- --with-mysql-dir=/usr/local/mysql --with-mysql- lib=/usr/local/mysql/lib --with-mysql-include=/usr/local/mysql/include Luego $ bundle install
  • 16. PADRINO Instalación Para no tener problemas con UTF8 I18n.default_locale = :es! Padrino.after_load do! Encoding.default_internal = nil! DataMapper.finalize! end! config/boot.rb
  • 17. PADRINO Primeros pasos $ padrino g controller Users get:index get:new post:create Crear controlador Crear vistas en app/views/users • index.haml • new.haml Agregar en app/controllers/users.rb en cada método: • render ‘users/index’ • render ‘users/new’
  • 18. PADRINO Primeros pasos app/views/layouts/application.haml Crear y editar layout ¿HTML? Nah… más simple y fácil de mantener HAML
  • 19. PADRINO Primeros pasos !!!! %html{lang: "es"}! %head! %meta{charset: "utf-8"}/! %title Padrino! %link{href: "http://getbootstrap.com/dist/css/bootstrap.min.css", rel: "stylesheet", type: "text/css"}/! %body! .container! .row! .col-md-12! = yield! app/views/layouts/application.haml
  • 20. PADRINO Modelos y DataMapper Los modelos para tu sub-aplicación se definen en app/models/ Y si lo necesitas para todas tus sub-aplicaciones models/ Los modelos representan: • Una o varias tablas en una o más bases de datos en uno o distintos motores de bases de datos • Servicios web • Datos estáticos
  • 21. PADRINO Modelos y DataMapper Definir modelo ¿en una línea? $ padrino g model User name:String age:Integer! # apply orms/datamapper! # create models/user.rb! # create db/migrate/001_create_users.rb! El generador crea: Modelo (models/user.rb) Migración (db/migrate/001_create_users.rb)
  • 22. PADRINO Modelos y DataMapper Modelo class User! include DataMapper::Resource! # No incluye timestamps por defecto! include DataMapper::Timestamp ! ! ! property :id, Serial! property :name, String! property :age, Integer! ! # Utilizaremos created_at y updated_at! timestamps :at! ! end!
  • 23. PADRINO Modelos y DataMapper Configurar conexión a bases de datos en config/database.rb case Padrino.env! when :development then DataMapper.setup(:default, "mysql://root@localhost/proyecto_dev")! when :production then DataMapper.setup(:default, "mysql://root@localhost/proyecto_prod")! when :test then DataMapper.setup(:default, "mysql://root@localhost/proyecto_test")! end! Permite configurar bases de datos según el entorno
  • 24. PADRINO Modelos y DataMapper 2 Opciones: $ rake dm:auto:migrate Generar tablas según modelos Destruye existentes, crea tablas y relaciones $ rake dm:auto:upgrade Crea o actualiza tablas (no crea relaciones ni elimina columnas) $ rake dm:migrate Generar tablas a partir de las migraciones
  • 25. PADRINO Modelos y DataMapper Obtener todos @user = User.all! Consultas varias al modelo # Obtener según ID! User.get 1 ! # El primero según una condición! User.first name: 'Andrés'! # Los que cumplan las condiciones! # gt = Mayor que ! # gte = Mayor o igual a! # lt = Menor que! # lte = Menor o igual a! User.all :age.gt => 10, :age.lte => 20! # Likes y orden?! # asc = Ascendente! # desc = Descendente! User.all :name.like => '%nd%', order: :name.asc!
  • 26. PADRINO Como se aplica al proyecto