Upload
lucas-caton
View
1.841
Download
0
Embed Size (px)
DESCRIPTION
Palestra "Desenvolvimento ágil de software com Ruby on Rails", no Café com Java (11/02/2012), na Caelum, São Paulo-SP.
Citation preview
Desenvolvimento ágil de software com
Ruby on Rails
Lucas Catón
Café com Java11/02/2012
Quem sou eu?
Lucas CatónBacharel em Sistemas de InformaçãoDesenvolvedor Ruby on Rails há 3 anos
@lucascatonhttp://blog.lucascaton.com.br
Antes que me atirem pedras...
Eu já fui programador Java...
Até que eu descobri o Ruby...
Mas eu não vim aqui dizer que:Ruby > Java!
Só vim dizer que Ruby...
...me fez um dev mais feliz!
Ruby on RailsLinguagem de programação Framework web
O que o Ruby tem de tão especial?
InterpretadaNão é necessário compilar o código!
DinâmicaEm tempo de execução, é possível: Adicionar novo código, extender classes, extender objetos, alterar o sistema de tipos.
Multi-paradigmaOrientada a objetos, funcional, permite programação imperativa.
Open-sourceVocê pode: olhar o código, estudar o código, alterar o código e ainda melhorar o código.
E mais importante que isso tudo...
Não precisa de “ponto e vírgula”!
Sintaxe expressíva
Diga muito!
Seja claro!
Escreva menos código!
Exemplo:
Imprimir somente paresentre 1 e um número qualquer.
C
#include <stdio.h>void imprime_pares(int limite){ int i; for(i = 1; i < = limite; i++) if(i%2 == 0) printf("%d\n", i);}
Java
public void imprime_pares(int limite){ for(int i = 1; i <= limite; i++) if(i%2 == 0) System.out.println(i);}
Ruby
def imprime_pares(limite) 1.upto(limite) {|i| puts i if i%2 == 0}end
1.class => Fixnum1.5.class => Float
0.zero? => true1.zero? => false
[1,2,3].class => Array[4,8].respond_to? :sort => true
1.methods => lista de métodos5.+(1) => 6
Tudo é um objeto!
true.class => TrueClass
false.class => FalseClass
true e false também são objetos!
nil.class => NilClass
a = nila.nil? => truea.methods => lista de métodosa.to_s => ""a.to_i => 0
a.sort => NoMethodError: undefined method `sort' for nil:NilClass
Até o nil é um objeto!
Metaprogramação
class Fooend
Foo.class_eval do define_method("novo_metodo") do |arg|
puts arg endend
f = Foo.newf.novo_metodo("123")# 123
O que o Rails tem de tão especial?
MVC
Model - View - Controller
Ajuda a aplicar a filosofia DRY:
“Don’t repear yourself”
RESTpattern for web apps
Verbos HTTP:GET, POST, PUT, DELETE
Convention over configuration
(Convenção ao invés de configuração)
0 25 50 75 100
Projeto (10%) Código (90%)
Antes...
0 25 50 75 100
Projeto (40%) Código (60%)
Depois...
Rails == desenvolvimento ágil
3 ambientes:
developmentproduction
test
Já vem pronto!
Rails é um metaframework.
Action PackControllers & Views
Action MailerE-mail services
Active Model+ Active Record
ORM
Active ResourceRESTful web services
Active SupportUtility classes
RailtiesCore Rails code
Documentação MUITO boa!
Conclusão:
A linguagem é divertida!
O Ruby on Rails já vem pronto pra uso!
Roda em qualquer plataforma!
A comunidade é forte!
O mercado está quente!
Ou seja...
Links interessantes:
Ruby a partir de Javahttp://www.ruby-lang.org/pt/documentacao/ruby-a-partir-de-outras-linguagens/para-ruby-a-partir-de-java/
Guru-SPhttps://groups.google.com/group/ruby-sp
Ruby Brasilhttp://ruby-br.org/
Ruby Insidehttp://www.rubyinside.com/
Dúvidas?
Obrigado!
@lucascaton
http://blog.lucascaton.com.br