Encontro de TI - Arteccom

123
Ruby on Rails Ecossistema e Agilidade Wednesday, April 8, 2009

description

Palestra sobre Agilidade e Ruby on Rails no Encontro de TI do Rio de Janeiro, pela Arteccom.

Transcript of Encontro de TI - Arteccom

Page 1: Encontro de TI - Arteccom

Ruby on RailsEcossistema e Agilidade

Wednesday, April 8, 2009

Page 2: Encontro de TI - Arteccom

Ruby on RailsEcossistema e Agilidade

Wednesday, April 8, 2009

Page 3: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 5: Encontro de TI - Arteccom

1Wednesday, April 8, 2009

Page 6: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 7: Encontro de TI - Arteccom

Aplicações vs. Frameworks

Wednesday, April 8, 2009

Page 8: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 9: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 10: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 11: Encontro de TI - Arteccom

“Produtividade”

“Quick’n Dirty”

Mantenabilidade

DÉBITO TÉCNICO

Wednesday, April 8, 2009

Page 12: Encontro de TI - Arteccom

“Produtividade”

“Quick’n Dirty”

Mantenabilidade

DÉBITO TÉCNICO

Wednesday, April 8, 2009

Page 13: Encontro de TI - Arteccom

“Produtividade”

“Quick’n Dirty”

Mantenabilidade

DÉBITO TÉCNICO

Wednesday, April 8, 2009

Page 14: Encontro de TI - Arteccom

“Produtividade”

“Quick’n Dirty”

Mantenabilidade

DÉBITO TÉCNICO

Wednesday, April 8, 2009

Page 15: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 16: Encontro de TI - Arteccom

Codificadoresx

Desenvolvedores

Wednesday, April 8, 2009

Page 17: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 18: Encontro de TI - Arteccom

Martin Fowler

Wednesday, April 8, 2009

Page 19: Encontro de TI - Arteccom

Agile

Wednesday, April 8, 2009

Page 20: Encontro de TI - Arteccom

AGILIDADE

Wednesday, April 8, 2009

Page 21: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 22: Encontro de TI - Arteccom

Estamos “descobrindo” maneiras melhores de desenvolver software na prática e ajudando outros

a desenvolver.

Wednesday, April 8, 2009

Page 23: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 24: Encontro de TI - Arteccom

Big Design Up Front

“Waterfall” (Cascata)

Escopo Fechado

“Change Requests”

Wednesday, April 8, 2009

Page 25: Encontro de TI - Arteccom

Big Design Up Front

“Waterfall” (Cascata)

Escopo Fechado

“Change Requests”

Wednesday, April 8, 2009

Page 26: Encontro de TI - Arteccom

Big Design Up Front

“Waterfall” (Cascata)

Escopo Fechado

“Change Requests”

Wednesday, April 8, 2009

Page 27: Encontro de TI - Arteccom

Big Design Up Front

“Waterfall” (Cascata)

Escopo Fechado

“Change Requests”

Wednesday, April 8, 2009

Page 28: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 29: Encontro de TI - Arteccom

Ceticismo

Wednesday, April 8, 2009

Page 30: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 31: Encontro de TI - Arteccom

Winston W. Royce - 1970

Wednesday, April 8, 2009

Page 32: Encontro de TI - Arteccom

“Eu acredito neste conceito mas a implementação descrita acima é arriscada

e convida falhas.”

Winston W. Royce - 1970

Wednesday, April 8, 2009

Page 33: Encontro de TI - Arteccom

“Eu acredito neste conceito mas a implementação descrita acima é arriscada

e convida falhas.”

Winston W. Royce - 1970

Wednesday, April 8, 2009

Page 34: Encontro de TI - Arteccom

“Eu acredito neste conceito mas a implementação descrita acima é arriscada

e convida falhas.”

Winston W. Royce - 1970

Wednesday, April 8, 2009

Page 35: Encontro de TI - Arteccom

“Cargo Cult”

Wednesday, April 8, 2009

Page 36: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 37: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 38: Encontro de TI - Arteccom

“SOFT”WARE

Wednesday, April 8, 2009

Page 39: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 40: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 41: Encontro de TI - Arteccom

Agilidade NÃO é metodologia

Wednesday, April 8, 2009

Page 42: Encontro de TI - Arteccom

Agilidade são valores, cultura.

Wednesday, April 8, 2009

Page 43: Encontro de TI - Arteccom

1Wednesday, April 8, 2009

Page 44: Encontro de TI - Arteccom

2Wednesday, April 8, 2009

Page 45: Encontro de TI - Arteccom

1993

“Matz”

Wednesday, April 8, 2009

Page 46: Encontro de TI - Arteccom

2001

“Prag Dave”

Wednesday, April 8, 2009

Page 47: Encontro de TI - Arteccom

2004

“DHH”

Wednesday, April 8, 2009

Page 48: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 49: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 50: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 51: Encontro de TI - Arteccom

“Tornar as coisas simples fáceis e as coisas

complexas possíveis”

Filosofia Ruby do 80/20

Wednesday, April 8, 2009

Page 52: Encontro de TI - Arteccom

Ruby on Rails

Wednesday, April 8, 2009

Page 53: Encontro de TI - Arteccom

RUBY

Wednesday, April 8, 2009

Page 54: Encontro de TI - Arteccom

ActiveSupportRails

RUBY

Wednesday, April 8, 2009

Page 55: Encontro de TI - Arteccom

ActionPack

ActionController

ActionView

ActiveSupportRails

RUBY

Wednesday, April 8, 2009

Page 56: Encontro de TI - Arteccom

ActiveRecord

ActionPack

ActionController

ActionView

ActiveSupportRails

RUBY

Wednesday, April 8, 2009

Page 57: Encontro de TI - Arteccom

ActiveRecord

ActionPack

ActionMailer

ActionController

ActionView

ActiveSupportRails

RUBY

Wednesday, April 8, 2009

Page 58: Encontro de TI - Arteccom

ActiveRecord

ActionPack

ActiveResource

ActionMailer

ActionController

ActionView

ActiveSupportRails

ActionWebService

RUBY

Wednesday, April 8, 2009

Page 59: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 60: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 61: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 62: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 63: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 64: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 65: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 66: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 67: Encontro de TI - Arteccom

class Product < ActiveRecord::Base after_create :set_initial_inventory has_many :variants, :dependent => :destroy has_many :images, :as => :viewable, :order => :position, :dependent => :destroy has_many :properties, :through => :product_properties belongs_to :tax_category

validates_presence_of :name validates_presence_of :master_price validates_presence_of :description

make_permalink :with => :name, :field => :permalinkend

Model

Wednesday, April 8, 2009

Page 68: Encontro de TI - Arteccom

class Product < ActiveRecord::Base after_create :set_initial_inventory has_many :variants, :dependent => :destroy has_many :images, :as => :viewable, :order => :position, :dependent => :destroy has_many :properties, :through => :product_properties belongs_to :tax_category

validates_presence_of :name validates_presence_of :master_price validates_presence_of :description

make_permalink :with => :name, :field => :permalinkend

Model

Product.find(1)

Wednesday, April 8, 2009

Page 69: Encontro de TI - Arteccom

<div id="product-listing"> <%= breadcrumbs(@taxon) %> <br/> <%= render :partial => "shared/products.html.erb", :locals => {:products => @products, :taxon => @taxon } %></div>

<% content_for :sidebar do %> <td id="shop-by-col" valign="top"> <%= render :partial => "shared/taxonomies" %> </td><% end %>

<%= render :partial => 'shared/paginate', :locals => {:collection => @products, :options => {}} unless @products.empty? %>

Views ERB

Wednesday, April 8, 2009

Page 70: Encontro de TI - Arteccom

#product-listing =breadcrumbs(@taxon) %br =render :partial => "shared/products.html.erb", :locals => {:products => @products, :taxon => @taxon}

-content_for :sidebar do %td#shop-by-col(:valign => "top") =render :partial => "shared/taxonomies" =render :partial => 'shared/paginate', :locals => {:collection => @products, :options => {}} unless @products.empty?

Views HAML

Wednesday, April 8, 2009

Page 71: Encontro de TI - Arteccom

class UsersController < Spree::BaseController resource_controller before_filter :initialize_extension_partials actions :all, :except => [:index, :destroy] show.before do @orders = Order.checkout_completed(true) .find_all_by_user_id(current_user.id) end

create.after { self.current_user = @user }

create.response do |wants| wants.html { redirect_back_or_default(products_path) } end end

Controller

Wednesday, April 8, 2009

Page 72: Encontro de TI - Arteccom

class UsersController < Spree::BaseController resource_controller before_filter :initialize_extension_partials actions :all, :except => [:index, :destroy] show.before do @orders = Order.checkout_completed(true) .find_all_by_user_id(current_user.id) end

create.after { self.current_user = @user }

create.response do |wants| wants.html { redirect_back_or_default(products_path) } end end

Controller

/users/1

Wednesday, April 8, 2009

Page 73: Encontro de TI - Arteccom

ActionController::Routing::Routes.draw do |map| map.connect ':controller/service.wsdl', :action => 'wsdl'

map.resources :products, :member => {:change_image => :post} map.resources :addresses map.resources :orders, :has_many => [:line_items]

map.namespace :admin do |admin| admin.resources :users admin.resources :products endend

Rotas RESTFul

Wednesday, April 8, 2009

Page 74: Encontro de TI - Arteccom

ActionController::Routing::Routes.draw do |map| map.connect ':controller/service.wsdl', :action => 'wsdl'

map.resources :products, :member => {:change_image => :post} map.resources :addresses map.resources :orders, :has_many => [:line_items]

map.namespace :admin do |admin| admin.resources :users admin.resources :products endend

Rotas RESTFul

GET /products/newGET /productsPOST /productsGET /products/1GET /products/1/editPUT /products/1DESTROY /products/1

Wednesday, April 8, 2009

Page 75: Encontro de TI - Arteccom

class RenameAppConfiguration < ActiveRecord::Migration def self.up rename_table :app_configurations, :configurations change_table :configurations do |t| t.string :type end end

def self.down change_table :configurations do |t| t.remove :type end rename_table :configurations, :app_configurations endend

Migrations

Wednesday, April 8, 2009

Page 76: Encontro de TI - Arteccom

class RenameAppConfiguration < ActiveRecord::Migration def self.up rename_table :app_configurations, :configurations change_table :configurations do |t| t.string :type end end

def self.down change_table :configurations do |t| t.remove :type end rename_table :configurations, :app_configurations endend

Migrations

rake db:migrate

Wednesday, April 8, 2009

Page 77: Encontro de TI - Arteccom

describe Product do include ProductSpecHelper

before(:each) do @product = Product.new end

it "should not be valid when empty" do @product.should_not be_valid end

it "should be valid when having correct information" do @product.attributes = valid_product_attributes @product.should be_valid endend

RSpec

Wednesday, April 8, 2009

Page 78: Encontro de TI - Arteccom

describe Product do include ProductSpecHelper

before(:each) do @product = Product.new end

it "should not be valid when empty" do @product.should_not be_valid end

it "should be valid when having correct information" do @product.attributes = valid_product_attributes @product.should be_valid endend

RSpec

rake spec

Wednesday, April 8, 2009

Page 79: Encontro de TI - Arteccom

Cucumber

Funcionalidade: Criar Post no Blog

Para conseguir divulgar minhas idéiasComo um bloggerEu quero conseguir criar um post no meu blog

Cenário: Criando um novo Post

Dado que estou na página de Administração E que eu preencho o formulário de novo post Então quero conseguir visualizar o título do novo post na homepage

Wednesday, April 8, 2009

Page 80: Encontro de TI - Arteccom

“Beautiful Code”

Wednesday, April 8, 2009

Page 81: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 82: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 83: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 84: Encontro de TI - Arteccom

11 mil classes!

46 só de Collections!

Wednesday, April 8, 2009

Page 85: Encontro de TI - Arteccom

• Modules:

• Enumerable

• Comparable

• Classes:

• Array

• Hash

• Set

• Sorted Set

Wednesday, April 8, 2009

Page 86: Encontro de TI - Arteccom

• Modules:

• Enumerable

• Comparable

• Classes:

• Array

• Hash

• Set

• Sorted Set

1.400classes

só 6 de Collections!

Wednesday, April 8, 2009

Page 87: Encontro de TI - Arteccom

• Convention over Configuration

• Don’t Repeat Yourself

• You Ain’t Gonna Need It

• Boas Práticas

• Escalabilidade

• Segurança

• Automação

Wednesday, April 8, 2009

Page 88: Encontro de TI - Arteccom

2Wednesday, April 8, 2009

Page 89: Encontro de TI - Arteccom

3Wednesday, April 8, 2009

Page 90: Encontro de TI - Arteccom

Mitos

Wednesday, April 8, 2009

Page 91: Encontro de TI - Arteccom

Rails não Escala

Wednesday, April 8, 2009

Page 92: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 93: Encontro de TI - Arteccom

Blaine Cook

http://www.akitaonrails.com/2008/6/17/chatting-with-blaine-cook-twitter

Para colocar as coisas em perspectiva, o Friendster foi

escrito em Java no começo, mas mudou para PHP. O MySpace foi

escrito em ColdFusion e transicionou para ASP.NET.

Quando as pessoas caem em problemas de escalabilidade,

costumam pensar sempre que o problema é a linguagem, mas eu acho que esse raramente é o

caso.

Wednesday, April 8, 2009

Page 94: Encontro de TI - Arteccom

http://www.computerworld.com.au/article/268003/ruby_rails_rolls_into_enterprise?fp=16&fpid=1

“O New York Times usou Ruby on Rails para juntar, analisar e mostrar resultados das eleições quase em

real time em um dos dias mais congestionados de tráfego que já se viu. ”

Wednesday, April 8, 2009

Page 95: Encontro de TI - Arteccom

http://www.railsonwave.com/railsonwave/2008/6/4/yellowpages-com-migrates-to-rails

“Eles servem mais de 23 milhões de visitantes por mês. A conversão resultou em 20 mil linhas de código Ruby em vez de 125 mil de Java, e mais importante, facilitou a dificuldade que tinham em manter isso. Uma vez finalizado e otimizado o site

deles agora é mais rápido que antes. Eles também finalizaram a re-escrita em 3 meses com 4 desenvolvedores.”

Wednesday, April 8, 2009

Page 96: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 97: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 98: Encontro de TI - Arteccom

Mitos

Wednesday, April 8, 2009

Page 99: Encontro de TI - Arteccom

Rails é mal documentado

Wednesday, April 8, 2009

Page 100: Encontro de TI - Arteccom

Geoffrey

Wednesday, April 8, 2009

Page 101: Encontro de TI - Arteccom

Jason e Gregg

Wednesday, April 8, 2009

Page 102: Encontro de TI - Arteccom

Pratik Naik

Wednesday, April 8, 2009

Page 103: Encontro de TI - Arteccom

Satish Talim

Wednesday, April 8, 2009

Page 104: Encontro de TI - Arteccom

Peter Cooper

Wednesday, April 8, 2009

Page 105: Encontro de TI - Arteccom

Peter Cooper

Wednesday, April 8, 2009

Page 106: Encontro de TI - Arteccom

_why

Wednesday, April 8, 2009

Page 107: Encontro de TI - Arteccom

Ryan Bates

Wednesday, April 8, 2009

Page 108: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 109: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 110: Encontro de TI - Arteccom

3Wednesday, April 8, 2009

Page 111: Encontro de TI - Arteccom

4Wednesday, April 8, 2009

Page 112: Encontro de TI - Arteccom

Open Source

Wednesday, April 8, 2009

Page 113: Encontro de TI - Arteccom

Chris Wanstrath

Wednesday, April 8, 2009

Page 114: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 115: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 116: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 117: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 118: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 119: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 120: Encontro de TI - Arteccom

Wednesday, April 8, 2009

Page 121: Encontro de TI - Arteccom

4Wednesday, April 8, 2009

Page 122: Encontro de TI - Arteccom

“Especialista de uma coisa só é um amador em todo o

resto.”

Wednesday, April 8, 2009