173

Introducción a Ruby on Rails

Embed Size (px)

DESCRIPTION

Introducción a Rails

Citation preview

Page 1: Introducción a Ruby on Rails
Page 2: Introducción a Ruby on Rails

no olviden apagar sus celulares

Page 3: Introducción a Ruby on Rails

#=> sobre rieles

Page 4: Introducción a Ruby on Rails

?quien soy

Page 6: Introducción a Ruby on Rails
Page 7: Introducción a Ruby on Rails

programo

Page 8: Introducción a Ruby on Rails

escribo

Page 9: Introducción a Ruby on Rails

juego

Page 10: Introducción a Ruby on Rails

leo

Page 11: Introducción a Ruby on Rails

wtf?

Page 12: Introducción a Ruby on Rails

conociéndolos

Page 13: Introducción a Ruby on Rails

developers

Page 14: Introducción a Ruby on Rails

web developers

Page 15: Introducción a Ruby on Rails
Page 16: Introducción a Ruby on Rails

+

Page 17: Introducción a Ruby on Rails
Page 18: Introducción a Ruby on Rails

ルビは日本からきました

Page 19: Introducción a Ruby on Rails
Page 20: Introducción a Ruby on Rails

entendiendo rails

Page 21: Introducción a Ruby on Rails

pero antes, un desvío

Page 22: Introducción a Ruby on Rails

framework web

Page 23: Introducción a Ruby on Rails
Page 24: Introducción a Ruby on Rails
Page 25: Introducción a Ruby on Rails
Page 26: Introducción a Ruby on Rails
Page 27: Introducción a Ruby on Rails
Page 28: Introducción a Ruby on Rails
Page 29: Introducción a Ruby on Rails
Page 30: Introducción a Ruby on Rails

¿por qué?

Page 31: Introducción a Ruby on Rails

Tim Berners-Lee

Page 32: Introducción a Ruby on Rails

orientada a documentos

Page 33: Introducción a Ruby on Rails

HTTP + HTML

Page 34: Introducción a Ruby on Rails

GET /reports POST /reports/new

UPDATE /reports/1DELETE /reports/1

Page 35: Introducción a Ruby on Rails

<img>

Page 36: Introducción a Ruby on Rails

informativa

Page 37: Introducción a Ruby on Rails
Page 38: Introducción a Ruby on Rails

<form>

Page 39: Introducción a Ruby on Rails
Page 40: Introducción a Ruby on Rails
Page 41: Introducción a Ruby on Rails
Page 42: Introducción a Ruby on Rails

GET /reports POST /reports/new

UPDATE /reports/1DELETE /reports/1

Page 43: Introducción a Ruby on Rails

GET /reports POST /createReport POST /updateReport POST /deleteReport

Page 44: Introducción a Ruby on Rails

orientada a medios

Page 45: Introducción a Ruby on Rails

orientada a mediosorientada a experiencias

orientada a procesos

Page 46: Introducción a Ruby on Rails

nuevas necesidades

Page 47: Introducción a Ruby on Rails

nuevas herramientas

Page 48: Introducción a Ruby on Rails

nuevas herramientas

Page 49: Introducción a Ruby on Rails

ahora sí...

Page 50: Introducción a Ruby on Rails
Page 51: Introducción a Ruby on Rails
Page 52: Introducción a Ruby on Rails

entendiendo rails

Page 53: Introducción a Ruby on Rails

David Heinemeir Hansson

Page 54: Introducción a Ruby on Rails
Page 55: Introducción a Ruby on Rails
Page 56: Introducción a Ruby on Rails
Page 58: Introducción a Ruby on Rails

algunos mitos y verdades

Page 59: Introducción a Ruby on Rails

el mejor framework

Page 60: Introducción a Ruby on Rails

es perfecto

Page 61: Introducción a Ruby on Rails

cura el cáncer

Page 62: Introducción a Ruby on Rails

me consiguió esposa, regaló una casa y apadrinó mis hijos

Page 63: Introducción a Ruby on Rails

!=

Page 64: Introducción a Ruby on Rails
Page 65: Introducción a Ruby on Rails
Page 66: Introducción a Ruby on Rails
Page 67: Introducción a Ruby on Rails
Page 68: Introducción a Ruby on Rails

full-stack

Page 69: Introducción a Ruby on Rails

buenas prácticas

Page 70: Introducción a Ruby on Rails

tdd mvc

Page 71: Introducción a Ruby on Rails

mvc

Page 72: Introducción a Ruby on Rails
Page 73: Introducción a Ruby on Rails

orden

Page 74: Introducción a Ruby on Rails

todo sitio en su lugar

Page 75: Introducción a Ruby on Rails

> rails my_cool_project

Page 76: Introducción a Ruby on Rails
Page 77: Introducción a Ruby on Rails

separado de la presentación

Page 78: Introducción a Ruby on Rails
Page 79: Introducción a Ruby on Rails

!=

Page 80: Introducción a Ruby on Rails

orientación al desarrollador

Page 81: Introducción a Ruby on Rails
Page 82: Introducción a Ruby on Rails

no al navegador

Page 83: Introducción a Ruby on Rails

drydon’t repeat yourself

Page 84: Introducción a Ruby on Rails

en todas partes

Page 85: Introducción a Ruby on Rails

User.find(1)

en código SQL

Page 86: Introducción a Ruby on Rails

@post = Post.find(1)

<h1><%= @post.title %></h1>

<p><%= @post.content %></p>

entre las capascontroladora

vista

Page 87: Introducción a Ruby on Rails

script/generate model Photo

generadores

script/generate controller PhotoController

Page 88: Introducción a Ruby on Rails

convención por sobre configuración

Page 89: Introducción a Ruby on Rails

no hacer las tareas repetitivas

o aburridas

Page 90: Introducción a Ruby on Rails
Page 91: Introducción a Ruby on Rails

table users

Page 92: Introducción a Ruby on Rails

class User < ActiveRecord::Base

end

Page 93: Introducción a Ruby on Rails

user = User.new=> #<User id: nil, name: nil, email: nil, website: nil, crypted_password: nil, created_at: nil, updated_at: nil>

Page 94: Introducción a Ruby on Rails

>> user.name = "Alvaro"=> "Alvaro">> user.email = ”[email protected]"=> "[email protected]">> user.website = "http://www.srdperu.com"=> "http://www.srdperu.com">> user.save=> true

Page 95: Introducción a Ruby on Rails

>> User.find(1)=> #<User id: 1, name: "Alvaro"...>

Page 96: Introducción a Ruby on Rails

User.find_by_name>> User.find_by_name("Alvaro")=> #<User id: 1, name: "Alvaro"...>

Page 97: Introducción a Ruby on Rails

User_find_by_name_and_website

>> User.find_by_name_and_website("Alvaro","http://www.srdperu.com")

=> #<User id: 1, name: "Alvaro"...>

Page 98: Introducción a Ruby on Rails

>> User.find_or_create_by_name("Pepe")=> #<User id: 2, name: “Pepe” ...>

Page 99: Introducción a Ruby on Rails
Page 100: Introducción a Ruby on Rails
Page 101: Introducción a Ruby on Rails

configurable

Page 102: Introducción a Ruby on Rails

restricciones

Page 103: Introducción a Ruby on Rails

te liberan

Page 104: Introducción a Ruby on Rails

mvc

Page 105: Introducción a Ruby on Rails
Page 106: Introducción a Ruby on Rails
Page 107: Introducción a Ruby on Rails
Page 108: Introducción a Ruby on Rails

map.connect ':controller/:action/:id'

config/routes.rb

Page 109: Introducción a Ruby on Rails

Model

Page 110: Introducción a Ruby on Rails

class User < ActiveRecord::Base

end

Page 111: Introducción a Ruby on Rails

relaciones

Page 112: Introducción a Ruby on Rails
Page 113: Introducción a Ruby on Rails

class User < ActiveRecord::Basehas_many :photos

end

Page 114: Introducción a Ruby on Rails

class Photo < ActiveRecord::Base

end

Page 115: Introducción a Ruby on Rails

class Photo < ActiveRecord::Base belongs_to :user

end

Page 116: Introducción a Ruby on Rails

>> user.photos=> [#<Photo id: 1, name: "Primera foto pasable", description: nil, filename: "photos/yo.jpg", user_id: 1 ...>]

Page 117: Introducción a Ruby on Rails

>> user.photos.first.user=> #<User id: 1, name: "Alvaro", email: "[email protected]", website: "http://www.srdperu.com" ...>

Page 118: Introducción a Ruby on Rails

>> user.photos.create=> #<Photo id: 2, name: nil, description: nil, filename: nil, user_id: 1 ...>

Page 119: Introducción a Ruby on Rails

n - m

Page 120: Introducción a Ruby on Rails

infanciapersonalniño

n n

Page 121: Introducción a Ruby on Rails

infanciapersonalniño

n n

Page 122: Introducción a Ruby on Rails

n__n

Page 123: Introducción a Ruby on Rails

class Tag < ActiveRecord::Base

end

Page 124: Introducción a Ruby on Rails

class PhotoTag < ActiveRecord::Base

end

Page 125: Introducción a Ruby on Rails

class PhotoTag < ActiveRecord::Basebelongs_to :photobelongs_to :tag

end

Page 126: Introducción a Ruby on Rails

class Photo < ActiveRecord::Basehas_many :photo_tags

end

Page 127: Introducción a Ruby on Rails

class Photo < ActiveRecord::Basehas_many :photo_tagshas_many :tags, :through => :photo_tags

end

Page 128: Introducción a Ruby on Rails

class Tag < ActiveRecord::Base has_many :photo_tags has_many :photos, :through => :photo_tagsend

Page 129: Introducción a Ruby on Rails

>> photo = Photo.first

>> tag = Tag.new(:name=>"personal")

>> photo.tags << tag

Page 130: Introducción a Ruby on Rails

>> photo.tags=> [#<Tag id: 1, name: "personal" ...>]

Page 131: Introducción a Ruby on Rails

>> tag.photos=> [#<Photo id: 1, name: "Primera foto pasable", description: nil, filename: "photos/yo.jpg", user_id: 1 ... >]

Page 132: Introducción a Ruby on Rails

>> photo.tags.create=> #<Tag id: 2, name: nil ... >

Page 133: Introducción a Ruby on Rails

>> photo.tags=> [#<Tag id: 1, name: "personal", ....>, #<Tag id: 2, name: nil ....>]

Page 134: Introducción a Ruby on Rails

>> photo.photo_tags=> [#<PhotoTag id: 1, photo_id: 1, tag_id: 1 ... >, #<PhotoTag id: 2, photo_id: 1, tag_id: 2 ... ">]

Page 135: Introducción a Ruby on Rails

y mucho más...pero eso en otra ocasión

Page 136: Introducción a Ruby on Rails

validaciones

Page 137: Introducción a Ruby on Rails

class Photo < ActiveRecord::Base

validates_presence_of :name validates_numericality_of :user_id validates_associated :user

end

Page 138: Introducción a Ruby on Rails

vista

Page 139: Introducción a Ruby on Rails

@post = Post.find(1)

<h1><%= @post.title %></h1>

<p><%= @post.content %></p>

controladora

vista

Page 140: Introducción a Ruby on Rails

<h1><%= @post.title %></h1>

<p><%= @post.content %></p>

ERb

Page 141: Introducción a Ruby on Rails

<ul>

<%= @photos.each do |photo| %></h1>

<li><%= photo.name %></li>

<% end %>

</ul>

ERb

Page 142: Introducción a Ruby on Rails

<%= link_to “Ver foto” @photo %>

Helpers

Page 143: Introducción a Ruby on Rails

<% form_for @photo do |f| %> <%= f.text_field :name %> <%= f.text_area :description %> <%= f.submit "Agregar" %><% end %>

Helpers

Page 144: Introducción a Ruby on Rails

<% form_for @tag do |f| %> <%= f.text_field :name %> <%= f.submit "Agregar" %><% end %>

Partials

_tag_form.html.erb

<%= render :partial=>”tag_form” %>

Page 145: Introducción a Ruby on Rails
Page 146: Introducción a Ruby on Rails

+

Page 147: Introducción a Ruby on Rails

page.visual_effect :show, 'product_error'page.replace_html 'product_error', "Error"page.visual_effect :highlight, 'error'

RJS

Page 148: Introducción a Ruby on Rails
Page 149: Introducción a Ruby on Rails

controlador

Page 150: Introducción a Ruby on Rails
Page 151: Introducción a Ruby on Rails

class PhotosController < ActionController::Base

def index @photos = Photo.find(:all) end

end

Page 152: Introducción a Ruby on Rails

convenciones

Page 153: Introducción a Ruby on Rails

class PhotosController < ActionController::Base

def index @photos = Photo.find(:all) end

end

Page 154: Introducción a Ruby on Rails

class PhotosController < ActionController::Base

def index @photos = Photo.find(:all) end

end

views/photos/index.html.erb

Page 155: Introducción a Ruby on Rails

class PhotosController < ActionController::Base

def index @photos = Photo.find(:all) render :action => “catalogue” endend

Page 156: Introducción a Ruby on Rails

class PhotosController < ActionController::Base

def index @photos = Photo.find(:all) respond_to do |format| format.html { ... } format.xml { render :xml => @photos } endend

Page 157: Introducción a Ruby on Rails

class PhotosController < ActionController::Base

def catalogue ... enddef show_photo ... enddef create_new_photo ... enddef save ... enddef remove_photo ... end

Page 158: Introducción a Ruby on Rails
Page 159: Introducción a Ruby on Rails

REST

Page 160: Introducción a Ruby on Rails
Page 161: Introducción a Ruby on Rails
Page 162: Introducción a Ruby on Rails
Page 163: Introducción a Ruby on Rails

GET /photos POST /photos/create

UPDATE /photos/1 DELETE /photos/1

Page 164: Introducción a Ruby on Rails
Page 165: Introducción a Ruby on Rails

map.resource :photos

config/routes.rb

Page 166: Introducción a Ruby on Rails

class PhotosController < ActionController::Base

def index ... enddef new ... enddef create ... enddef edit ... enddef update ... enddef destroy ... end

end

Page 167: Introducción a Ruby on Rails
Page 168: Introducción a Ruby on Rails
Page 169: Introducción a Ruby on Rails
Page 170: Introducción a Ruby on Rails

ninguna viñeta ha sido dañada en esta presentación

Page 171: Introducción a Ruby on Rails

¿preguntas?(todavía falta para el almuerzo)

Page 173: Introducción a Ruby on Rails

¿preguntas?(todavía falta para el almuerzo)