Ruby, Rails e DiversãoJúlio Monteiro <[email protected]>
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 <[email protected]>
@jmonteiro /jmonteiro www.monteiro.eti.br
Obrigado!Júlio Monteiro <[email protected]>
@jmonteiro /jmonteiro www.monteiro.eti.br
Recommended