Desenvolvimento ágil de software com Ruby on Rails

Post on 28-May-2015

1.841 views 0 download

description

Palestra "Desenvolvimento ágil de software com Ruby on Rails", no Café com Java (11/02/2012), na Caelum, São Paulo-SP.

Transcript of Desenvolvimento ágil de software com Ruby on Rails

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...

Dúvidas?

Obrigado!

@lucascaton

http://blog.lucascaton.com.br