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)
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’
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!