o que vem por aí com rails 3
DESCRIPTION
2º encontro de Frevo on RailsTRANSCRIPT
![Page 1: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/1.jpg)
RUBY ON RAILS 3O que vem de novo por aí...
FREVO ON RAILSGRUPO DE USUÁRIOS RUBY/RAILS DE PERNAMBUCO
GUILHERME CARVALHO E LAILSON BANDEIRA
![Page 2: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/2.jpg)
FREVO ON RAILS
“No, no another Rails upgrade!”
![Page 3: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/3.jpg)
FREVO ON RAILS
Rails 2 + MerbAnunciado em dezembro de 2008
![Page 4: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/4.jpg)
FREVO ON RAILS
Versão 3.0.0.beta4Funciona em Ruby 1.8.7 e 1.9.2
Contain
s sm
all p
iece
s.
Not good fo
r child
ren
of a
ge 3 o
r les
s. Not
ente
rpris
e-re
ady.
Versão 3.0.0.beta3
Versão 3.0.0.beta2
Versão 3.0.0.beta1
Versão 3.0.0.rc1
![Page 5: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/5.jpg)
FREVO ON RAILS
MAJOR UPGRADE
![Page 6: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/6.jpg)
FREVO ON RAILS
Mudanças arquiteturais importantes
![Page 7: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/7.jpg)
FREVO ON RAILS
RAILS
![Page 8: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/8.jpg)
FREVO ON RAILS
ACTIVERECORD
ACTIVESUPPORT
ACTIVEMODEL
ACTIONPACK
ACTIVERESOURCE
ACTIONMAILER
RAILTIES
![Page 9: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/9.jpg)
FREVO ON RAILS
COMMAND INTERFACE
![Page 10: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/10.jpg)
FREVO ON RAILS
rails nome_da_app
![Page 11: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/11.jpg)
FREVO ON RAILS
rails new nome_da_app
![Page 12: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/12.jpg)
FREVO ON RAILS
script/server
![Page 13: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/13.jpg)
FREVO ON RAILS
rails server
![Page 14: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/14.jpg)
FREVO ON RAILS
rails s
![Page 15: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/15.jpg)
FREVO ON RAILS
script/generate controller nome_do_controlador
![Page 16: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/16.jpg)
FREVO ON RAILS
rails generate controller nome_do_controlador
![Page 17: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/17.jpg)
FREVO ON RAILS
rails g controller nome_do_controlador
![Page 18: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/18.jpg)
FREVO ON RAILS
console
dbconsole
plugin
destroy
benchmarker
profiler
runner
![Page 19: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/19.jpg)
FREVO ON RAILS
Gerenciamento de gems com o Bundler
![Page 20: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/20.jpg)
FREVO ON RAILS
ROUTING
![Page 21: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/21.jpg)
FREVO ON RAILS
Não se usa mais o map!
![Page 22: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/22.jpg)
FREVO ON RAILS
ActionController::Routing::Routes.draw do |map| map.resources :postsend
![Page 23: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/23.jpg)
FREVO ON RAILS
ActionController::Routing::Routes.draw do |map| resources :postsend
![Page 24: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/24.jpg)
FREVO ON RAILS
Resources e singular resources não mudaram
![Page 25: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/25.jpg)
FREVO ON RAILS
Namespaces e scopes
![Page 26: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/26.jpg)
FREVO ON RAILS
map.with_options(:namespace => “admin”) do |a| a.resources :photosend
![Page 27: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/27.jpg)
FREVO ON RAILS
namespace “admin” do resources :photosend
![Page 28: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/28.jpg)
FREVO ON RAILS
Scopes foram criados para auxiliar na organização
![Page 29: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/29.jpg)
FREVO ON RAILS
map.resources :photos, :member => {:preview => :get }
![Page 30: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/30.jpg)
FREVO ON RAILS
resources :photos do get :preview, on: :memberend
![Page 31: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/31.jpg)
FREVO ON RAILS
Sai o método connect, entra o match
![Page 32: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/32.jpg)
FREVO ON RAILS
rake routes
![Page 33: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/33.jpg)
FREVO ON RAILS
RESPONDERS
![Page 34: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/34.jpg)
FREVO ON RAILS
class PostsController < ApplicationController def index @posts = Post.all
respond_to do |format| format.html # index.html.erb format.xml { render :xml => @posts } end end
def show @post = Post.find(params[:id])
respond_to do |format| format.html # show.html.erb format.xml { render :xml => @post } end end...end
![Page 35: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/35.jpg)
FREVO ON RAILS
class PostsController < ApplicationController respond_to :html, :xml, :json def index @posts = Post.all
respond_with(@posts) end
def show @post = Post.find(params[:id])
respond_with(@post) end...end
![Page 36: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/36.jpg)
FREVO ON RAILS
É possível também criar outros responders
![Page 37: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/37.jpg)
FREVO ON RAILS
Three reasons to love Respondershttp://weblog.rubyonrails.org/2009/8/31/three-reasons-love-responder
![Page 38: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/38.jpg)
FREVO ON RAILS
ACTION CONTROLLER
![Page 39: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/39.jpg)
FREVO ON RAILS
Gargalo de performance:roteamento + renderização
![Page 40: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/40.jpg)
FREVO ON RAILS
Separação de responsabilidades:Action Dispatch
![Page 41: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/41.jpg)
FREVO ON RAILS
Hierarquia de controladores
![Page 42: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/42.jpg)
FREVO ON RAILS
AbstractController::Base
ActionController::Metal
ActionController::Base
![Page 43: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/43.jpg)
FREVO ON RAILS
ACTIVE RECORDQUERY API
![Page 44: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/44.jpg)
FREVO ON RAILS
Nova API de consultaActive Relation
![Page 45: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/45.jpg)
FREVO ON RAILS
@posts = Post.find(:all,! :conditions => ['created_at > ?', date])
![Page 46: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/46.jpg)
FREVO ON RAILS
@posts = Post.where(['created_at > ?', date])
![Page 47: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/47.jpg)
FREVO ON RAILS
Lazy loading
![Page 48: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/48.jpg)
FREVO ON RAILS
@posts = Post.where(['created_at > ?', date])
if only_published?! @posts = @posts.where(:published => true)end
![Page 50: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/50.jpg)
FREVO ON RAILS
from
order
select
wherehaving
joins
group
includeslimit
offset
![Page 51: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/51.jpg)
FREVO ON RAILS
minimum
firstall
sumcount
maximum
averagecalculate
last
![Page 52: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/52.jpg)
FREVO ON RAILS
Active Record Query Interface 3http://m.onkey.org/2010/1/22/active-record-query-interface
![Page 53: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/53.jpg)
FREVO ON RAILS
Escopos também foram simplificados
![Page 54: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/54.jpg)
FREVO ON RAILS
class Post < ActiveRecord::Base named_scope :published, :conditions => {:published => true} named_scope :unpublished, :conditions => {:published => false}end
![Page 55: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/55.jpg)
FREVO ON RAILS
class Post < ActiveRecord::Base scope :published, where(:published => true) scope :unpublished, where(:published => false)end
![Page 56: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/56.jpg)
FREVO ON RAILS
VALIDAÇÕES SEMMODELOS
![Page 57: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/57.jpg)
FREVO ON RAILS
Consequência da modularizaçãoActive Model
![Page 58: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/58.jpg)
FREVO ON RAILS
class Person include ActiveModel::Validations validates_presence_of :first_name, :last_name attr_accessor :first_name, :last_nameend
![Page 59: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/59.jpg)
FREVO ON RAILS
person = Person.newperson.valid? # falseperson.errors # {:first_name=>["can't be bl...p.first_name = 'John'p.last_name = 'Travolta'p.valid? # true
![Page 60: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/60.jpg)
FREVO ON RAILS
Make Any Ruby Object Feel Like ARhttp://yehudakatz.com/2010/01/10/activemodel-make-any-
ruby-object-feel-like-activerecord/
![Page 61: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/61.jpg)
FREVO ON RAILS
VALIDADORESCUSTOMIZADOS
![Page 62: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/62.jpg)
FREVO ON RAILS
Agora é possível criar validadores que podem ser reusados
![Page 63: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/63.jpg)
FREVO ON RAILS
Mais um resultado do desacoplamento
![Page 64: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/64.jpg)
FREVO ON RAILS
module ActiveModel module Validations class CepValidator < EachValidator FORMATO_CEP = /\d{5}-\d{3}/
def initialize(options) super(options) end
def validate_each(record, attribute, value) unless valid?(value) record.errors[attribute] = 'não é válido' end end
def valid?(value) FORMATO_CEP =~ value end end endend
![Page 65: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/65.jpg)
FREVO ON RAILS
require "#{Rails.root}/lib/validadores/cep_validator"
class Person < ActiveRecord::Base validates :cep, cep: trueend
![Page 66: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/66.jpg)
FREVO ON RAILS
ACTION MAILER
![Page 67: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/67.jpg)
FREVO ON RAILS
Sai TMail, entra Mail
![Page 68: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/68.jpg)
FREVO ON RAILS
Uma nova casa para os mailers./app/mailers/nome_do_mailer
![Page 69: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/69.jpg)
FREVO ON RAILS
Criação de defaults para diminuir duplicação de código
![Page 70: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/70.jpg)
FREVO ON RAILS
class UserMailer < ActionMailer::Base! def welcome(user)! ! recipients user.email! ! from “[email protected]”! ! subject “Welcome to my site”! ! body { :user => user }! endend
![Page 71: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/71.jpg)
FREVO ON RAILS
class UserMailer < ActionMailer::Base! default from: “[email protected]”
! def welcome(user)! ! @user = user
! ! mail(to: user.email, ! ! ! subject: “Welcome to my site”)! endend
![Page 72: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/72.jpg)
FREVO ON RAILS
Anexos muito mais fáceis
![Page 73: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/73.jpg)
FREVO ON RAILS
class UserMailer < ActionMailer::Base! default from: “[email protected]”
! def welcome(user)! ! @user = user! ! attachments[“hello.gif”] = File.read(‘...’)
! ! mail(to: user.email, ! ! ! subject: “Welcome to my site”)! endend
![Page 74: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/74.jpg)
FREVO ON RAILS
class UserMailer < ActionMailer::Base! default from: “[email protected]”
! def welcome(user)! ! @user = user! ! attachments.inline[“logo.png”] = ! ! ! File.read(...)
! ! mail(to: user.email, ! ! ! subject: “Welcome to my site”)! endend
![Page 75: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/75.jpg)
FREVO ON RAILS
![Page 76: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/76.jpg)
FREVO ON RAILS
DEMO TIME
![Page 77: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/77.jpg)
FREVO ON RAILS
RECURSOS
![Page 78: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/78.jpg)
FREVO ON RAILS
Rails Dispatchhttp://railsdispatch.com/
![Page 79: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/79.jpg)
FREVO ON RAILS
Rails Guides Edgehttp://guides.rails.info/
![Page 80: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/80.jpg)
FREVO ON RAILS
Engine Yard Bloghttp://www.engineyard.com/blog
![Page 81: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/81.jpg)
FREVO ON RAILS
Dive into Rails 3 Screencastshttp://rubyonrails.org/screencasts/rails3
![Page 82: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/82.jpg)
FREVO ON RAILS
Railscastshttp://railscasts.com/
![Page 83: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/83.jpg)
FREVO ON RAILS
Agile Web Development with Rails (4th ed.)http://pragprog.com/titles/rails4/agile-web-development-with-rails
![Page 84: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/84.jpg)
FREVO ON RAILS
The Rails 3 Wayhttp://my.safaribooksonline.com/9780132480345
![Page 85: O que vem por aí com Rails 3](https://reader030.vdocuments.mx/reader030/viewer/2022020101/55530451b4c9054e3f8b487a/html5/thumbnails/85.jpg)
FREVO ON RAILS
FREVO ON RAILSGRUPO DE USUÁRIOS RUBY DE PERNAMBUCO