99
Ruby, Rails e Diversão Júlio Monteiro <[email protected]> 23 de Janeiro de 2009 - Campus Party Brasil 2009

Ruby, Rails e Diversão (Campus Party Brasil 2009)

Embed Size (px)

DESCRIPTION

Palestra ministrada dia 23 de janeiro de 2009 (2009-01-23) na Campus Party Brasil 2009, na área de Desenvolvimento, em São Paulo/SP.

Citation preview

Page 1: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Ruby, Rails e DiversãoJúlio Monteiro <[email protected]>

23 de Janeiro de 2009 - Campus Party Brasil 2009

Page 2: Ruby, Rails e Diversão (Campus Party Brasil 2009)

@jmonteiro

/jmonteiro

www.monteiro.eti.br

Júlio Monteiro

Page 3: Ruby, Rails e Diversão (Campus Party Brasil 2009)
Page 4: Ruby, Rails e Diversão (Campus Party Brasil 2009)
Page 5: Ruby, Rails e Diversão (Campus Party Brasil 2009)
Page 6: Ruby, Rails e Diversão (Campus Party Brasil 2009)

http://www.akitaonrails.com/2009/1/20/palestra-na-campus-party

Page 7: Ruby, Rails e Diversão (Campus Party Brasil 2009)
Page 8: Ruby, Rails e Diversão (Campus Party Brasil 2009)
Page 9: Ruby, Rails e Diversão (Campus Party Brasil 2009)
Page 10: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Linguagem de Script

Page 11: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Interpretada*

* Dependendo do ambiente de execução.

Page 12: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Orientada a Objeto

Page 13: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Programação:

Page 14: Ruby, Rails e Diversão (Campus Party Brasil 2009)

General* Purpose

* General como em non-specific, ao invés de universal

Page 15: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Tarefas Rápidas

Page 16: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Influências

Page 17: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Linguagem Prática

Page 18: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Orientação a Objetos

Page 19: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Metaprogramação

Page 20: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Sintaxe

Page 21: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Tratamento de Exceções

(similar, não baseado)

Page 22: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Características

Page 23: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Não existem “procedimentos” nem “funções”

Page 24: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Tudo é um objeto

Page 25: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Métodos são mensagens

Page 26: Ruby, Rails e Diversão (Campus Party Brasil 2009)

1

Page 27: Ruby, Rails e Diversão (Campus Party Brasil 2009)

1

Page 28: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Fixnum

1

Page 29: Ruby, Rails e Diversão (Campus Party Brasil 2009)

1.class

Page 30: Ruby, Rails e Diversão (Campus Party Brasil 2009)

1.class

=> “Fixnum”

Page 31: Ruby, Rails e Diversão (Campus Party Brasil 2009)

1.send(“class”)

Page 32: Ruby, Rails e Diversão (Campus Party Brasil 2009)

1.send(“class”)

=> “Fixnum”

Page 33: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Até operadores matemáticos são métodos

Page 34: Ruby, Rails e Diversão (Campus Party Brasil 2009)

“Beleza leva a felicidade.

Felicidade leva a produtividade.

Logo, beleza leva a

produtividade.”(David Heinemeier Hansson)

Page 35: Ruby, Rails e Diversão (Campus Party Brasil 2009)

“Você pode reconhecer a

verdade por sua beleza e

simplicidade.”(Richard Feynman)

Page 36: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Observações

• Ruby não é perfeita

• Ruby não é a única linguagem linda

• Gosto varia com frequência

Page 37: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Blocos

Page 38: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Blocos

• Closures - Funções anônimas - Lambdas

• Sintaxe concisa (similar a Smalltalk)

• Duas sintaxes

{|a, b| # código com a, b }

do |a, b|

# código com a, b

end

Page 39: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Blocos

{|a, b| # código com a, b }

do |a, b|

# código com a, b

end

Page 40: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Blocos

array.group_by {|a| a.type}

("a".."z").each do |char|

puts char

end

obj.each do |e|

e.save!

end

Page 41: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Blocos

File.open("config.txt") do |in|

in.each_line do |line|

process_config_line(line)

end

end

(0..100).collect {|n| User.find(n).destroy }

Page 42: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Sintaxe para Servir

Page 43: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Código simples:

;

Page 44: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Código complexo:

;

Page 45: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Ruby suporta:

; ;

Page 46: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Parênteses opcionais

( )

Page 47: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Classes são abertas

Page 48: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Classes são abertas

• Toda classe pode ser alterada

• Liberdade total

• Flexibilidade no código

• “Ruby Way”

Page 49: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Exemplos

class NilClass

def blank?

true

end

end

class String

def blank?

self == ""

end

end

Page 50: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Qual a utilidade disso tudo?

Page 51: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Código simples

Page 52: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Pouco código

Page 53: Ruby, Rails e Diversão (Campus Party Brasil 2009)

É mais fácil achar e corrigir um

bug em:

a) 100 LOC

b) 10.000 LOC

c) 10^42 LOC

Page 54: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Facilidade de correção

Page 55: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Facilidade para extensão

Page 56: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Menos tempo de

desenvolvimento

Page 57: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Menos tempo

para entregar um produto

Page 58: Ruby, Rails e Diversão (Campus Party Brasil 2009)
Page 59: Ruby, Rails e Diversão (Campus Party Brasil 2009)
Page 60: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Direto ao ponto:

Page 61: Ruby, Rails e Diversão (Campus Party Brasil 2009)

No Rails, você se preocupa mais

com a “Lógica de Negócio”

Page 62: Ruby, Rails e Diversão (Campus Party Brasil 2009)

No Rails, você se preocupa mais

com a “Lógica de Negócio”

Page 63: Ruby, Rails e Diversão (Campus Party Brasil 2009)
Page 64: Ruby, Rails e Diversão (Campus Party Brasil 2009)
Page 65: Ruby, Rails e Diversão (Campus Party Brasil 2009)
Page 66: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Classe Livro:

Pertence a um Autor

Tem várias Tags

Tem um Upload

O título tem no máximo 300 caracteres

Tem uma máquina de estados

Page 67: Ruby, Rails e Diversão (Campus Party Brasil 2009)

class Book < ActiveRecord::Base

# Relacionamentos

belongs_to :author

has_and_belongs_to_many :tags

has_one :upload

# Validação

validates_length_of :subtitle, :maximum => 300

Page 68: Ruby, Rails e Diversão (Campus Party Brasil 2009)

acts_as_state_machine :initial => :registred

state :passive

state :registred

state :waiting_processing

state :in_processing

state :preview

state :published

state :unpublished

event :register do

transitions :from => :passive, :to => :registred

end

# ...

end

Page 69: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Hey, mas o framework ______

também faz isso!

Page 70: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Rails usa Ruby :)

Page 71: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Ruby não é

melhor que _______,

mas tem muitacoisa interessante!

Page 72: Ruby, Rails e Diversão (Campus Party Brasil 2009)
Page 73: Ruby, Rails e Diversão (Campus Party Brasil 2009)
Page 74: Ruby, Rails e Diversão (Campus Party Brasil 2009)

10 anos

12 funcionários

muito sucesso

(e alguns milhões)

Page 75: Ruby, Rails e Diversão (Campus Party Brasil 2009)
Page 76: Ruby, Rails e Diversão (Campus Party Brasil 2009)
Page 77: Ruby, Rails e Diversão (Campus Party Brasil 2009)
Page 78: Ruby, Rails e Diversão (Campus Party Brasil 2009)

12 meses

20+ projetos entregues

todos de sucesso

Page 79: Ruby, Rails e Diversão (Campus Party Brasil 2009)
Page 80: Ruby, Rails e Diversão (Campus Party Brasil 2009)
Page 81: Ruby, Rails e Diversão (Campus Party Brasil 2009)

E muitas outras empresas!

Page 82: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Observações:

Page 83: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Ruby é difícil

Page 84: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Ruby é difícil

porque é diferente.

Page 85: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Ruby on Rails é difícil

Page 86: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Ruby on Rails é difícil

porque é um framework

Page 87: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Ruby on Rails é difícil

porque é um framework

e usa Ruby.

Page 88: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Mas vale apena :)

Page 89: Ruby, Rails e Diversão (Campus Party Brasil 2009)

www.rubyonrails.com.br

Page 90: Ruby, Rails e Diversão (Campus Party Brasil 2009)

www.rubyonrails.pro.br

Page 91: Ruby, Rails e Diversão (Campus Party Brasil 2009)
Page 92: Ruby, Rails e Diversão (Campus Party Brasil 2009)
Page 93: Ruby, Rails e Diversão (Campus Party Brasil 2009)
Page 94: Ruby, Rails e Diversão (Campus Party Brasil 2009)
Page 95: Ruby, Rails e Diversão (Campus Party Brasil 2009)
Page 96: Ruby, Rails e Diversão (Campus Party Brasil 2009)
Page 97: Ruby, Rails e Diversão (Campus Party Brasil 2009)
Page 98: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Perguntas?Júlio Monteiro <[email protected]>

@jmonteiro /jmonteiro www.monteiro.eti.br

Page 99: Ruby, Rails e Diversão (Campus Party Brasil 2009)

Obrigado!Júlio Monteiro <[email protected]>

@jmonteiro /jmonteiro www.monteiro.eti.br