ruby, rails e diversão (campus party brasil 2009)

Post on 19-May-2015

1.310 Views

Category:

Education

7 Downloads

Preview:

Click to see full reader

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.

TRANSCRIPT

Ruby, Rails e DiversãoJúlio Monteiro <julio@monteiro.eti.br>

23 de Janeiro de 2009 - Campus Party Brasil 2009

@jmonteiro

/jmonteiro

www.monteiro.eti.br

Júlio Monteiro

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

Linguagem de Script

Interpretada*

* Dependendo do ambiente de execução.

Orientada a Objeto

Programação:

General* Purpose

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

Tarefas Rápidas

Influências

Linguagem Prática

Orientação a Objetos

Metaprogramação

Sintaxe

Tratamento de Exceções

(similar, não baseado)

Características

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

Tudo é um objeto

Métodos são mensagens

1

1

Fixnum

1

1.class

1.class

=> “Fixnum”

1.send(“class”)

1.send(“class”)

=> “Fixnum”

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

“Beleza leva a felicidade.

Felicidade leva a produtividade.

Logo, beleza leva a

produtividade.”(David Heinemeier Hansson)

“Você pode reconhecer a

verdade por sua beleza e

simplicidade.”(Richard Feynman)

Observações

• Ruby não é perfeita

• Ruby não é a única linguagem linda

• Gosto varia com frequência

Blocos

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

Blocos

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

do |a, b|

# código com a, b

end

Blocos

array.group_by {|a| a.type}

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

puts char

end

obj.each do |e|

e.save!

end

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 }

Sintaxe para Servir

Código simples:

;

Código complexo:

;

Ruby suporta:

; ;

Parênteses opcionais

( )

Classes são abertas

Classes são abertas

• Toda classe pode ser alterada

• Liberdade total

• Flexibilidade no código

• “Ruby Way”

Exemplos

class NilClass

def blank?

true

end

end

class String

def blank?

self == ""

end

end

Qual a utilidade disso tudo?

Código simples

Pouco código

É mais fácil achar e corrigir um

bug em:

a) 100 LOC

b) 10.000 LOC

c) 10^42 LOC

Facilidade de correção

Facilidade para extensão

Menos tempo de

desenvolvimento

Menos tempo

para entregar um produto

Direto ao ponto:

No Rails, você se preocupa mais

com a “Lógica de Negócio”

No Rails, você se preocupa mais

com a “Lógica de Negócio”

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

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

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

Hey, mas o framework ______

também faz isso!

Rails usa Ruby :)

Ruby não é

melhor que _______,

mas tem muitacoisa interessante!

10 anos

12 funcionários

muito sucesso

(e alguns milhões)

12 meses

20+ projetos entregues

todos de sucesso

E muitas outras empresas!

Observações:

Ruby é difícil

Ruby é difícil

porque é diferente.

Ruby on Rails é difícil

Ruby on Rails é difícil

porque é um framework

Ruby on Rails é difícil

porque é um framework

e usa Ruby.

Mas vale apena :)

www.rubyonrails.com.br

www.rubyonrails.pro.br

Perguntas?Júlio Monteiro <julio@monteiro.eti.br>

@jmonteiro /jmonteiro www.monteiro.eti.br

Obrigado!Júlio Monteiro <julio@monteiro.eti.br>

@jmonteiro /jmonteiro www.monteiro.eti.br

top related