85
RUBY ON RAILS 3 O que vem de novo por aí... FREVO ON RAILS GRUPO DE USUÁRIOS RUBY/RAILS DE PERNAMBUCO GUILHERME CARVALHO E LAILSON BANDEIRA

O que vem por aí com Rails 3

Embed Size (px)

DESCRIPTION

2º encontro de Frevo on Rails

Citation preview

Page 1: O que vem por aí com Rails 3

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

FREVO ON RAILS

“No, no another Rails upgrade!”

Page 3: O que vem por aí com Rails 3

FREVO ON RAILS

Rails 2 + MerbAnunciado em dezembro de 2008

Page 4: O que vem por aí com Rails 3

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

FREVO ON RAILS

MAJOR UPGRADE

Page 6: O que vem por aí com Rails 3

FREVO ON RAILS

Mudanças arquiteturais importantes

Page 7: O que vem por aí com Rails 3

FREVO ON RAILS

RAILS

Page 8: O que vem por aí com Rails 3

FREVO ON RAILS

ACTIVERECORD

ACTIVESUPPORT

ACTIVEMODEL

ACTIONPACK

ACTIVERESOURCE

ACTIONMAILER

RAILTIES

Page 9: O que vem por aí com Rails 3

FREVO ON RAILS

COMMAND INTERFACE

Page 10: O que vem por aí com Rails 3

FREVO ON RAILS

rails nome_da_app

Page 11: O que vem por aí com Rails 3

FREVO ON RAILS

rails new nome_da_app

Page 12: O que vem por aí com Rails 3

FREVO ON RAILS

script/server

Page 13: O que vem por aí com Rails 3

FREVO ON RAILS

rails server

Page 14: O que vem por aí com Rails 3

FREVO ON RAILS

rails s

Page 15: O que vem por aí com Rails 3

FREVO ON RAILS

script/generate controller nome_do_controlador

Page 16: O que vem por aí com Rails 3

FREVO ON RAILS

rails generate controller nome_do_controlador

Page 17: O que vem por aí com Rails 3

FREVO ON RAILS

rails g controller nome_do_controlador

Page 18: O que vem por aí com Rails 3

FREVO ON RAILS

console

dbconsole

plugin

destroy

benchmarker

profiler

runner

Page 19: O que vem por aí com Rails 3

FREVO ON RAILS

Gerenciamento de gems com o Bundler

Page 20: O que vem por aí com Rails 3

FREVO ON RAILS

ROUTING

Page 21: O que vem por aí com Rails 3

FREVO ON RAILS

Não se usa mais o map!

Page 22: O que vem por aí com Rails 3

FREVO ON RAILS

ActionController::Routing::Routes.draw do |map| map.resources :postsend

Page 23: O que vem por aí com Rails 3

FREVO ON RAILS

ActionController::Routing::Routes.draw do |map| resources :postsend

Page 24: O que vem por aí com Rails 3

FREVO ON RAILS

Resources e singular resources não mudaram

Page 25: O que vem por aí com Rails 3

FREVO ON RAILS

Namespaces e scopes

Page 26: O que vem por aí com Rails 3

FREVO ON RAILS

map.with_options(:namespace => “admin”) do |a| a.resources :photosend

Page 27: O que vem por aí com Rails 3

FREVO ON RAILS

namespace “admin” do resources :photosend

Page 28: O que vem por aí com Rails 3

FREVO ON RAILS

Scopes foram criados para auxiliar na organização

Page 29: O que vem por aí com Rails 3

FREVO ON RAILS

map.resources :photos, :member => {:preview => :get }

Page 30: O que vem por aí com Rails 3

FREVO ON RAILS

resources :photos do get :preview, on: :memberend

Page 31: O que vem por aí com Rails 3

FREVO ON RAILS

Sai o método connect, entra o match

Page 32: O que vem por aí com Rails 3

FREVO ON RAILS

rake routes

Page 33: O que vem por aí com Rails 3

FREVO ON RAILS

RESPONDERS

Page 34: O que vem por aí com Rails 3

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

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

FREVO ON RAILS

É possível também criar outros responders

Page 37: O que vem por aí com Rails 3

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

FREVO ON RAILS

ACTION CONTROLLER

Page 39: O que vem por aí com Rails 3

FREVO ON RAILS

Gargalo de performance:roteamento + renderização

Page 40: O que vem por aí com Rails 3

FREVO ON RAILS

Separação de responsabilidades:Action Dispatch

Page 41: O que vem por aí com Rails 3

FREVO ON RAILS

Hierarquia de controladores

Page 43: O que vem por aí com Rails 3

FREVO ON RAILS

ACTIVE RECORDQUERY API

Page 44: O que vem por aí com Rails 3

FREVO ON RAILS

Nova API de consultaActive Relation

Page 45: O que vem por aí com Rails 3

FREVO ON RAILS

@posts = Post.find(:all,! :conditions => ['created_at > ?', date])

Page 46: O que vem por aí com Rails 3

FREVO ON RAILS

@posts = Post.where(['created_at > ?', date])

Page 47: O que vem por aí com Rails 3

FREVO ON RAILS

Lazy loading

Page 48: O que vem por aí com Rails 3

FREVO ON RAILS

@posts = Post.where(['created_at > ?', date])

if only_published?! @posts = @posts.where(:published => true)end

Page 49: O que vem por aí com Rails 3

FREVO ON RAILS

# @[email protected] do |p|! ...end

Page 50: O que vem por aí com Rails 3

FREVO ON RAILS

from

order

select

wherehaving

joins

group

includeslimit

offset

Page 51: O que vem por aí com Rails 3

FREVO ON RAILS

minimum

firstall

sumcount

maximum

averagecalculate

last

Page 52: O que vem por aí com Rails 3

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

FREVO ON RAILS

Escopos também foram simplificados

Page 54: O que vem por aí com Rails 3

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

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

FREVO ON RAILS

VALIDAÇÕES SEMMODELOS

Page 57: O que vem por aí com Rails 3

FREVO ON RAILS

Consequência da modularizaçãoActive Model

Page 58: O que vem por aí com Rails 3

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

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 61: O que vem por aí com Rails 3

FREVO ON RAILS

VALIDADORESCUSTOMIZADOS

Page 62: O que vem por aí com Rails 3

FREVO ON RAILS

Agora é possível criar validadores que podem ser reusados

Page 63: O que vem por aí com Rails 3

FREVO ON RAILS

Mais um resultado do desacoplamento

Page 64: O que vem por aí com Rails 3

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

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

FREVO ON RAILS

ACTION MAILER

Page 67: O que vem por aí com Rails 3

FREVO ON RAILS

Sai TMail, entra Mail

Page 68: O que vem por aí com Rails 3

FREVO ON RAILS

Uma nova casa para os mailers./app/mailers/nome_do_mailer

Page 69: O que vem por aí com Rails 3

FREVO ON RAILS

Criação de defaults para diminuir duplicação de código

Page 70: O que vem por aí com Rails 3

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

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

FREVO ON RAILS

Anexos muito mais fáceis

Page 73: O que vem por aí com Rails 3

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

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

FREVO ON RAILS

Page 76: O que vem por aí com Rails 3

FREVO ON RAILS

DEMO TIME

Page 77: O que vem por aí com Rails 3

FREVO ON RAILS

RECURSOS

Page 81: O que vem por aí com Rails 3

FREVO ON RAILS

Dive into Rails 3 Screencastshttp://rubyonrails.org/screencasts/rails3

Page 83: O que vem por aí com Rails 3

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

FREVO ON RAILS

The Rails 3 Wayhttp://my.safaribooksonline.com/9780132480345

Page 85: O que vem por aí com Rails 3

FREVO ON RAILS

FREVO ON RAILSGRUPO DE USUÁRIOS RUBY DE PERNAMBUCO