fisl 11 - ecossistema ruby on rails

210
Ruby on Rails A apresentação já vai começar ...

Upload: fabio-akita

Post on 05-Sep-2014

2.120 views

Category:

Technology


1 download

DESCRIPTION

Ruby on Rails é um framework web. Mas essa é a parte menos importante. O que torna difícil a qualquer um de "clonar" essa iniciativa é que seria necessário clonar toda a comunidade. Sem o ecossistema que faz open source, trás preceitos ágeis, empreendedorismo, produtos, nada disso seria possível.

TRANSCRIPT

Page 1: Fisl 11 - Ecossistema Ruby on Rails

Ruby on RailsA apresentação já vai começar ...

Page 2: Fisl 11 - Ecossistema Ruby on Rails
Page 3: Fisl 11 - Ecossistema Ruby on Rails
Page 4: Fisl 11 - Ecossistema Ruby on Rails

Ruby on Rails

Page 5: Fisl 11 - Ecossistema Ruby on Rails

AkitaOnRails.com

@AkitaOnRails

Page 6: Fisl 11 - Ecossistema Ruby on Rails
Page 8: Fisl 11 - Ecossistema Ruby on Rails
Page 9: Fisl 11 - Ecossistema Ruby on Rails

Ruby on Rails 2.3.x

Ruby on Rails 3 Beta

Ruby 1.8.x

Ruby 1.9.x

Page 10: Fisl 11 - Ecossistema Ruby on Rails

Ruby on Rails 2.3.x

Ruby on Rails 3 Beta

Ruby 1.8.x

Ruby 1.9.x

Page 11: Fisl 11 - Ecossistema Ruby on Rails

Ruby on Rails 2.3.x

Ruby on Rails 3 Beta

Ruby 1.8.x

Ruby 1.9.x

Page 12: Fisl 11 - Ecossistema Ruby on Rails

Ruby on Rails 2.3.x

Ruby on Rails 3 Beta

Ruby 1.8.x

Ruby 1.9.x

Page 13: Fisl 11 - Ecossistema Ruby on Rails

1993

“Matz”

Page 14: Fisl 11 - Ecossistema Ruby on Rails

2001

Dave Thomas

Page 15: Fisl 11 - Ecossistema Ruby on Rails

2004

“DHH”

Page 16: Fisl 11 - Ecossistema Ruby on Rails
Page 17: Fisl 11 - Ecossistema Ruby on Rails
Page 18: Fisl 11 - Ecossistema Ruby on Rails
Page 19: Fisl 11 - Ecossistema Ruby on Rails
Page 20: Fisl 11 - Ecossistema Ruby on Rails
Page 21: Fisl 11 - Ecossistema Ruby on Rails

2006

Charles Nutter

Page 22: Fisl 11 - Ecossistema Ruby on Rails
Page 23: Fisl 11 - Ecossistema Ruby on Rails
Page 24: Fisl 11 - Ecossistema Ruby on Rails
Page 25: Fisl 11 - Ecossistema Ruby on Rails

JRuby 1.5.x

Rubinius 1.0

IronRuby 1.0

MacRuby 0.6

Page 26: Fisl 11 - Ecossistema Ruby on Rails

JRuby 1.5.x

Rubinius 1.0

IronRuby 1.0

MacRuby 0.6

Page 27: Fisl 11 - Ecossistema Ruby on Rails

JRuby 1.5.x

Rubinius 1.0

IronRuby 1.0

MacRuby 0.6

Page 28: Fisl 11 - Ecossistema Ruby on Rails

JRuby 1.5.x

Rubinius 1.0

IronRuby 1.0

MacRuby 0.6

Page 29: Fisl 11 - Ecossistema Ruby on Rails

“Tornar as coisas simples fáceis e as coisas complexas

possíveis”Filoso!a Ruby

Page 30: Fisl 11 - Ecossistema Ruby on Rails
Page 31: Fisl 11 - Ecossistema Ruby on Rails

Alan Kay Dan Ingalls

Page 32: Fisl 11 - Ecossistema Ruby on Rails

Eu inventei o termo

“Orientação a Objetos” e

posso dizer que não era C++

que eu tinha em mente.

Alan Kay

Page 33: Fisl 11 - Ecossistema Ruby on Rails

Meta Programação

Page 34: Fisl 11 - Ecossistema Ruby on Rails

Meta Apresentação

Page 35: Fisl 11 - Ecossistema Ruby on Rails
Page 36: Fisl 11 - Ecossistema Ruby on Rails
Page 37: Fisl 11 - Ecossistema Ruby on Rails

Código que gera Código

Convention over Con!guration

“Don’t Repeat Yourself”

Extreme Programming

Page 38: Fisl 11 - Ecossistema Ruby on Rails

Código que gera Código

Convention over Con!guration

“Don’t Repeat Yourself”

Extreme Programming

Page 39: Fisl 11 - Ecossistema Ruby on Rails

Código que gera Código

Convention over Con!guration

“Don’t Repeat Yourself”

Extreme Programming

Page 40: Fisl 11 - Ecossistema Ruby on Rails

Código que gera Código

Convention over Con!guration

“Don’t Repeat Yourself”

Extreme Programming

Page 41: Fisl 11 - Ecossistema Ruby on Rails

Recursos Restful

Unicode, Time Zone, i18n

Segurança(XSS, CSRF, Injection)

Page 42: Fisl 11 - Ecossistema Ruby on Rails

Recursos Restful

Unicode, Time Zone, i18n

Segurança(XSS, CSRF, Injection)

Page 43: Fisl 11 - Ecossistema Ruby on Rails

Recursos Restful

Unicode, Time Zone, i18n

Segurança(XSS, CSRF, Injection)

Page 44: Fisl 11 - Ecossistema Ruby on Rails

Templates ERB, HAML

Autenticação HTTP Basic, HTTP Digest,Devise

Bancos de Dados MySQL, PostgreSQL, Oracle,MongoDB, CouchDB

ORMs ActiveRecord, DataMapper,MongoMapper, Sequel

Javascript Prototype, jQuery,SproutCore

Web Servers Apache 2, NginX,Lighty, Litespeed

Page 45: Fisl 11 - Ecossistema Ruby on Rails

Templates ERB, HAML

Autenticação HTTP Basic, HTTP Digest,Devise

Bancos de Dados MySQL, PostgreSQL, Oracle,MongoDB, CouchDB

ORMs ActiveRecord, DataMapper,MongoMapper, Sequel

Javascript Prototype, jQuery,SproutCore

Web Servers Apache 2, NginX,Lighty, Litespeed

Page 46: Fisl 11 - Ecossistema Ruby on Rails

Templates ERB, HAML

Autenticação HTTP Basic, HTTP Digest,Devise

Bancos de Dados MySQL, PostgreSQL, Oracle,MongoDB, CouchDB

ORMs ActiveRecord, DataMapper,MongoMapper, Sequel

Javascript Prototype, jQuery,SproutCore

Web Servers Apache 2, NginX,Lighty, Litespeed

Page 47: Fisl 11 - Ecossistema Ruby on Rails

Templates ERB, HAML

Autenticação HTTP Basic, HTTP Digest,Devise

Bancos de Dados MySQL, PostgreSQL, Oracle,MongoDB, CouchDB

ORMs ActiveRecord, DataMapper,MongoMapper, Sequel

Javascript Prototype, jQuery,SproutCore

Web Servers Apache 2, NginX,Lighty, Litespeed

Page 48: Fisl 11 - Ecossistema Ruby on Rails

Templates ERB, HAML

Autenticação HTTP Basic, HTTP Digest,Devise

Bancos de Dados MySQL, PostgreSQL, Oracle,MongoDB, CouchDB

ORMs ActiveRecord, DataMapper,MongoMapper, Sequel

Javascript Prototype, jQuery,SproutCore

Web Servers Apache 2, NginX,Lighty, Litespeed

Page 49: Fisl 11 - Ecossistema Ruby on Rails

Templates ERB, HAML

Autenticação HTTP Basic, HTTP Digest,Devise

Bancos de Dados MySQL, PostgreSQL, Oracle,MongoDB, CouchDB

ORMs ActiveRecord, DataMapper,MongoMapper, Sequel

Javascript Prototype, jQuery,SproutCore

Web Servers Apache 2, NginX,Lighty, Litespeed

Page 50: Fisl 11 - Ecossistema Ruby on Rails
Page 51: Fisl 11 - Ecossistema Ruby on Rails
Page 52: Fisl 11 - Ecossistema Ruby on Rails
Page 53: Fisl 11 - Ecossistema Ruby on Rails
Page 54: Fisl 11 - Ecossistema Ruby on Rails
Page 55: Fisl 11 - Ecossistema Ruby on Rails
Page 56: Fisl 11 - Ecossistema Ruby on Rails
Page 57: Fisl 11 - Ecossistema Ruby on Rails
Page 58: Fisl 11 - Ecossistema Ruby on Rails
Page 59: Fisl 11 - Ecossistema Ruby on Rails
Page 60: Fisl 11 - Ecossistema Ruby on Rails
Page 61: Fisl 11 - Ecossistema Ruby on Rails
Page 62: Fisl 11 - Ecossistema Ruby on Rails
Page 63: Fisl 11 - Ecossistema Ruby on Rails
Page 64: Fisl 11 - Ecossistema Ruby on Rails
Page 65: Fisl 11 - Ecossistema Ruby on Rails
Page 66: Fisl 11 - Ecossistema Ruby on Rails

Estrutura de Diretórios Similar

Page 67: Fisl 11 - Ecossistema Ruby on Rails

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

Page 68: Fisl 11 - Ecossistema Ruby on Rails

<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

Page 69: Fisl 11 - Ecossistema Ruby on Rails

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

Page 70: Fisl 11 - Ecossistema Ruby on Rails

“Beautiful Code”

Page 71: Fisl 11 - Ecossistema Ruby on Rails

//$Id: Booking.java 5579 2007-06-27 00:06:49Z gavin $package org.jboss.seam.example.booking;

import java.io.Serializable;import java.math.BigDecimal;import java.text.DateFormat;import java.util.Date;

import javax.persistence.Basic;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.ManyToOne;import javax.persistence.Temporal;import javax.persistence.TemporalType;import javax.persistence.Transient;

import org.hibernate.validator.Length;import org.hibernate.validator.NotNull;import org.hibernate.validator.Pattern;import org.jboss.seam.annotations.Name;

@Entity@Name("booking")public class Booking implements Serializable{ private Long id; private User user; private Hotel hotel; private Date checkinDate; private Date checkoutDate; private String creditCard; private String creditCardName; private int creditCardExpiryMonth; private int creditCardExpiryYear; private boolean smoking; private int beds; public Booking() {} public Booking(Hotel hotel, User user) { this.hotel = hotel; this.user = user; }

@Transient public BigDecimal getTotal() { return hotel.getPrice().multiply( new BigDecimal( getNights() ) ); }

@Transient public int getNights() { return (int) ( checkoutDate.getTime() - checkinDate.getTime() ) / 1000 / 60 / 60 / 24; }

@Id @GeneratedValue public Long getId() { return id; } public void setId(Long id) { this.id = id; } @NotNull @Basic @Temporal(TemporalType.DATE) public Date getCheckinDate() { return checkinDate; } public void setCheckinDate(Date datetime) { this.checkinDate = datetime; }

@ManyToOne @NotNull public Hotel getHotel() { return hotel; } public void setHotel(Hotel hotel) { this.hotel = hotel; } @ManyToOne @NotNull public User getUser() { return user; }

Page 72: Fisl 11 - Ecossistema Ruby on Rails

public void setUser(User user) { this.user = user; } @Basic @Temporal(TemporalType.DATE) @NotNull public Date getCheckoutDate() { return checkoutDate; } public void setCheckoutDate(Date checkoutDate) { this.checkoutDate = checkoutDate; } @NotNull(message="Credit card number is required") @Length(min=16, max=16, message="Credit card number must 16 digits long") @Pattern(regex="^\\d*$", message="Credit card number must be numeric") public String getCreditCard() { return creditCard; }

public void setCreditCard(String creditCard) { this.creditCard = creditCard; } @Transient public String getDescription() { DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM); return hotel==null ? null : hotel.getName() + ", " + df.format( getCheckinDate() ) + " to " + df.format( getCheckoutDate() ); }

public boolean isSmoking() { return smoking; }

public void setSmoking(boolean smoking) { this.smoking = smoking; }

public int getBeds() { return beds; }

public void setBeds(int beds) { this.beds = beds; } @NotNull(message="Credit card name is required") @Length(min=3, max=70, message="Credit card name is required") public String getCreditCardName() { return creditCardName; }

public void setCreditCardName(String creditCardName) { this.creditCardName = creditCardName; }

public int getCreditCardExpiryMonth() { return creditCardExpiryMonth; }

public void setCreditCardExpiryMonth(int creditCardExpiryMonth) { this.creditCardExpiryMonth = creditCardExpiryMonth; }

public int getCreditCardExpiryYear() { return creditCardExpiryYear; }

public void setCreditCardExpiryYear(int creditCardExpiryYear) { this.creditCardExpiryYear = creditCardExpiryYear; } @Override public String toString() { return "Booking(" + user + ","+ hotel + ")"; }

}

Page 73: Fisl 11 - Ecossistema Ruby on Rails

class Booking < ActiveRecord::Base belongs_to :hotel belongs_to :user validates_presence_of :hotel validates_presence_of :user validates_presence_of :credit_card validates_presence_of :credit_card_name validates_length_of :credit_card, :within => 16..16 validates_format_of :credit_card, :with => /^\\d*$/ validates_length_of :credit_card_name, :within => 3..70 def total hotel.price * nights end def nights ((checkout_date - checkin_date) / 1.day).round end def to_s "Booking(#{user},#{hotel})" endend

Page 74: Fisl 11 - Ecossistema Ruby on Rails

class Booking < ActiveRecord::Base belongs_to :hotel belongs_to :user validates_presence_of :hotel validates_presence_of :user validates_presence_of :credit_card validates_presence_of :credit_card_name validates_length_of :credit_card, :within => 16..16 validates_format_of :credit_card, :with => /^\\d*$/ validates_length_of :credit_card_name, :within => 3..70 def total hotel.price * nights end def nights ((checkout_date - checkin_date) / 1.day).round end def to_s "Booking(#{user},#{hotel})" endend

Page 75: Fisl 11 - Ecossistema Ruby on Rails

class CreateBookings < ActiveRecord::Migration def self.up create_table :bookings do |t| t.references :user t.references :hotel t.datetime :checkin t.datetime :checkout t.string :credit_card t.string :credit_card_name t.integer :credit_card_expiry_month t.integer :credit_card_expiry_year t.boolean :smoking t.integer :beds

t.timestamps end end

def self.down drop_table :bookings endend

Page 76: Fisl 11 - Ecossistema Ruby on Rails

class CreateBookings < ActiveRecord::Migration def self.up create_table :bookings do |t| t.references :user t.references :hotel t.datetime :checkin t.datetime :checkout t.string :credit_card t.string :credit_card_name t.integer :credit_card_expiry_month t.integer :credit_card_expiry_year t.boolean :smoking t.integer :beds

t.timestamps end end

def self.down drop_table :bookings endend

Page 77: Fisl 11 - Ecossistema Ruby on Rails

class CreateBookings < ActiveRecord::Migration def self.up create_table :bookings do |t| t.references :user t.references :hotel t.datetime :checkin t.datetime :checkout t.string :credit_card t.string :credit_card_name t.integer :credit_card_expiry_month t.integer :credit_card_expiry_year t.boolean :smoking t.integer :beds

t.timestamps end end

def self.down drop_table :bookings endend

Page 78: Fisl 11 - Ecossistema Ruby on Rails

190vs

40

Page 79: Fisl 11 - Ecossistema Ruby on Rails
Page 80: Fisl 11 - Ecossistema Ruby on Rails

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

“Eles servem mais de 23 milhões de visitantes/mês. A conversão resultou em 20 mil linhas de Ruby em vez de 125 mil linhas de Java e, mais importante, facilitou a di!culdade que tinham em manutenção. Eles também !nalizaram a reescrita do sistema

em apenas 3 meses com 4 desenvolvedores. Uma vez completo e otimizado, o site deles agora é mais rápido que antes.”

Page 81: Fisl 11 - Ecossistema Ruby on Rails

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

“Eles servem mais de 23 milhões de visitantes/mês. A conversão resultou em 20 mil linhas de Ruby em vez de 125 mil linhas de Java e, mais importante, facilitou a di!culdade que tinham em manutenção. Eles também !nalizaram a reescrita do sistema

em apenas 3 meses com 4 desenvolvedores. Uma vez completo e otimizado, o site deles agora é mais rápido que antes.”

Page 82: Fisl 11 - Ecossistema Ruby on Rails

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

“Eles servem mais de 23 milhões de visitantes/mês. A conversão resultou em 20 mil linhas de Ruby em vez de 125 mil linhas de Java e, mais importante, facilitou a di!culdade que tinham em manutenção. Eles também !nalizaram a reescrita do sistema

em apenas 3 meses com 4 desenvolvedores. Uma vez completo e otimizado, o site deles agora é mais rápido que antes.”

Page 83: Fisl 11 - Ecossistema Ruby on Rails

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

“Eles servem mais de 23 milhões de visitantes/mês. A conversão resultou em 20 mil linhas de Ruby em vez de 125 mil linhas de Java e, mais importante, facilitou a di!culdade que tinham em manutenção. Eles também !nalizaram a reescrita do sistema

em apenas 3 meses com 4 desenvolvedores. Uma vez completo e otimizado, o site deles agora é mais rápido que antes.”

Page 84: Fisl 11 - Ecossistema Ruby on Rails

Ferramentas

Page 85: Fisl 11 - Ecossistema Ruby on Rails

Repositórios Github

Integração Contínua

HudsonCruise

Deployment ChefPuppet

Monitoramento New Relic

Page 86: Fisl 11 - Ecossistema Ruby on Rails

Repositórios Github

Integração Contínua

HudsonCruise

Deployment ChefPuppet

Monitoramento New Relic

Page 87: Fisl 11 - Ecossistema Ruby on Rails

Repositórios Github

Integração Contínua

HudsonCruise

Deployment ChefPuppet

Monitoramento New Relic

Page 88: Fisl 11 - Ecossistema Ruby on Rails

Repositórios Github

Integração Contínua

HudsonCruise

Deployment ChefPuppet

Monitoramento New Relic

Page 89: Fisl 11 - Ecossistema Ruby on Rails
Page 90: Fisl 11 - Ecossistema Ruby on Rails
Page 91: Fisl 11 - Ecossistema Ruby on Rails
Page 92: Fisl 11 - Ecossistema Ruby on Rails
Page 93: Fisl 11 - Ecossistema Ruby on Rails
Page 94: Fisl 11 - Ecossistema Ruby on Rails
Page 95: Fisl 11 - Ecossistema Ruby on Rails
Page 96: Fisl 11 - Ecossistema Ruby on Rails
Page 97: Fisl 11 - Ecossistema Ruby on Rails
Page 98: Fisl 11 - Ecossistema Ruby on Rails
Page 99: Fisl 11 - Ecossistema Ruby on Rails

Testes

RSpec Cucumber

ShouldaFactory Girl

Machinist

Servidores

PassengerMongrel

ThinEventMachine

Page 100: Fisl 11 - Ecossistema Ruby on Rails

Testes

RSpec Cucumber

ShouldaFactory Girl

Machinist

Servidores

PassengerMongrel

ThinEventMachine

Page 101: Fisl 11 - Ecossistema Ruby on Rails

NoSQL

MongoMapperMongoID

CouchRestCassandra

Frameworks Web

Ruby on RailsSinatra

MerbCamping

Page 102: Fisl 11 - Ecossistema Ruby on Rails

NoSQL

MongoMapperMongoID

CouchRestCassandra

Frameworks Web

Ruby on RailsSinatra

MerbCamping

Page 103: Fisl 11 - Ecossistema Ruby on Rails

Subversion

Page 104: Fisl 11 - Ecossistema Ruby on Rails

GIT

Page 105: Fisl 11 - Ecossistema Ruby on Rails

Comunidade

Page 106: Fisl 11 - Ecossistema Ruby on Rails

Satish Talim

rubylearning.org

Page 107: Fisl 11 - Ecossistema Ruby on Rails

Mike Gunderloy

guides.rubyonrails.org

Page 108: Fisl 11 - Ecossistema Ruby on Rails

Geoffrey

peepcode.com

Page 109: Fisl 11 - Ecossistema Ruby on Rails

Ryan Bates

railscasts.com

Page 110: Fisl 11 - Ecossistema Ruby on Rails

github.com

Page 111: Fisl 11 - Ecossistema Ruby on Rails

railsdispatch.com

Page 112: Fisl 11 - Ecossistema Ruby on Rails

rubysoc.org

Page 113: Fisl 11 - Ecossistema Ruby on Rails

guru-sp.org

rubyinside.com.br

Page 114: Fisl 11 - Ecossistema Ruby on Rails

plataformatec.com.br

Page 115: Fisl 11 - Ecossistema Ruby on Rails

caelum.com.br

Page 116: Fisl 11 - Ecossistema Ruby on Rails

egenialsas.com.br

Page 117: Fisl 11 - Ecossistema Ruby on Rails
Page 118: Fisl 11 - Ecossistema Ruby on Rails
Page 119: Fisl 11 - Ecossistema Ruby on Rails

Eventos

Page 120: Fisl 11 - Ecossistema Ruby on Rails
Page 121: Fisl 11 - Ecossistema Ruby on Rails

oxenterails.com.br

Page 122: Fisl 11 - Ecossistema Ruby on Rails

rsrails.com.br

Page 123: Fisl 11 - Ecossistema Ruby on Rails

rubyconf.com.br

Page 124: Fisl 11 - Ecossistema Ruby on Rails

O que dizempor aí ...

Page 125: Fisl 11 - Ecossistema Ruby on Rails

Ruby é Lento

Page 126: Fisl 11 - Ecossistema Ruby on Rails

Existem mentiras, mentiras malditas e

estatísticas.

Page 127: Fisl 11 - Ecossistema Ruby on Rails

Existem mentiras, mentiras malditas e

estatísticas.

Page 128: Fisl 11 - Ecossistema Ruby on Rails

Existem mentiras, mentiras malditas e

estatísticas.

Page 129: Fisl 11 - Ecossistema Ruby on Rails
Page 130: Fisl 11 - Ecossistema Ruby on Rails

x mais lento que C++

Page 131: Fisl 11 - Ecossistema Ruby on Rails

0 32.5 65 97.5 130

Python 2

Ruby 1.9

JRuby

Perl

Python 3

PHP

Ruby 1.8

x mais lento que C++

Page 132: Fisl 11 - Ecossistema Ruby on Rails

Homepage: 331 ms

Page 133: Fisl 11 - Ecossistema Ruby on Rails

Homepage: 331 ms

Total: 5.45 s

Page 134: Fisl 11 - Ecossistema Ruby on Rails
Page 135: Fisl 11 - Ecossistema Ruby on Rails

Performance!=

Escalabilidade

Page 136: Fisl 11 - Ecossistema Ruby on Rails

Entendendo a WebDicas sobre Desenvolvimento Web com Ruby

Sala 41-C às 13h

Page 137: Fisl 11 - Ecossistema Ruby on Rails
Page 138: Fisl 11 - Ecossistema Ruby on Rails

Rails não Escala

Page 139: Fisl 11 - Ecossistema Ruby on Rails
Page 140: Fisl 11 - Ecossistema Ruby on Rails
Page 141: Fisl 11 - Ecossistema Ruby on Rails
Page 142: Fisl 11 - Ecossistema Ruby on Rails
Page 144: Fisl 11 - Ecossistema Ruby on Rails

Para colocar as coisas em perspectiva, o Friendster foi

escrito em Java e eles mudaram para PHP. MySpace foi escrito

em ColdFusion e eles mudaram para ASP.NET.

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

Page 145: Fisl 11 - Ecossistema Ruby on Rails

Para colocar as coisas em perspectiva, o Friendster foi

escrito em Java e eles mudaram para PHP. MySpace foi escrito

em ColdFusion e eles mudaram para ASP.NET.

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

Quando as pessoas caem em problemas de escalabilidade, normalmente acham que a

linguagem é o problema, mas eu acho que isso raramente é a

realidade.

Page 146: Fisl 11 - Ecossistema Ruby on Rails

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

“O The New York Times usou Ruby on Rails para agregar, analizar e mostrar os resultados das

eleições em quase tempo real em um de seus sites mais acessados de todos os tempos.”

Page 147: Fisl 11 - Ecossistema Ruby on Rails

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

“O The New York Times usou Ruby on Rails para agregar, analizar e mostrar os resultados das

eleições em quase tempo real em um de seus sites mais acessados de todos os tempos.”

Page 148: Fisl 11 - Ecossistema Ruby on Rails
Page 149: Fisl 11 - Ecossistema Ruby on Rails
Page 150: Fisl 11 - Ecossistema Ruby on Rails
Page 151: Fisl 11 - Ecossistema Ruby on Rails
Page 152: Fisl 11 - Ecossistema Ruby on Rails
Page 153: Fisl 11 - Ecossistema Ruby on Rails
Page 154: Fisl 11 - Ecossistema Ruby on Rails

Outros Mitos?

Page 155: Fisl 11 - Ecossistema Ruby on Rails
Page 156: Fisl 11 - Ecossistema Ruby on Rails

Mais Produtivo

“Melhor”

Anti-legado

Page 157: Fisl 11 - Ecossistema Ruby on Rails

Sempre se Lembre

Poderíamos contratar um Macaco Treinadopara fazer seu Trabalho!

Page 158: Fisl 11 - Ecossistema Ruby on Rails
Page 159: Fisl 11 - Ecossistema Ruby on Rails
Page 160: Fisl 11 - Ecossistema Ruby on Rails
Page 161: Fisl 11 - Ecossistema Ruby on Rails
Page 162: Fisl 11 - Ecossistema Ruby on Rails

Agilidade

Page 163: Fisl 11 - Ecossistema Ruby on Rails
Page 164: Fisl 11 - Ecossistema Ruby on Rails

“Rápido”

Metodologias

Page 165: Fisl 11 - Ecossistema Ruby on Rails

“Rápido”

Metodologias

Page 166: Fisl 11 - Ecossistema Ruby on Rails
Page 167: Fisl 11 - Ecossistema Ruby on Rails
Page 168: Fisl 11 - Ecossistema Ruby on Rails
Page 169: Fisl 11 - Ecossistema Ruby on Rails

Robert C. Martin

Page 170: Fisl 11 - Ecossistema Ruby on Rails

“Uncle Bob”

Page 171: Fisl 11 - Ecossistema Ruby on Rails

Código Limpo

Page 172: Fisl 11 - Ecossistema Ruby on Rails
Page 173: Fisl 11 - Ecossistema Ruby on Rails

Test Driven Development

Page 174: Fisl 11 - Ecossistema Ruby on Rails
Page 175: Fisl 11 - Ecossistema Ruby on Rails

describe BankAccount do before :each do @bank_account = BankAccount.new :balance => 250 end it "should not be valid" do @bank_account.should be_valid end it "should transfer funds successfully" do @bank_account.should_receive(:transfer) .with_args(:amount => 100) .and_return(true) @bank_account.execute_transaction(:amount => 100) @bank_account.balance.should == 150 endend

Page 176: Fisl 11 - Ecossistema Ruby on Rails

describe BankAccount do before :each do @bank_account = BankAccount.new :balance => 250 end it "should not be valid" do @bank_account.should be_valid end it "should transfer funds successfully" do @bank_account.should_receive(:transfer) .with_args(:amount => 100) .and_return(true) @bank_account.execute_transaction(:amount => 100) @bank_account.balance.should == 150 endend

Page 177: Fisl 11 - Ecossistema Ruby on Rails

describe BankAccount do before :each do @bank_account = BankAccount.new :balance => 250 end it "should not be valid" do @bank_account.should be_valid end it "should transfer funds successfully" do @bank_account.should_receive(:transfer) .with_args(:amount => 100) .and_return(true) @bank_account.execute_transaction(:amount => 100) @bank_account.balance.should == 150 endend

Page 178: Fisl 11 - Ecossistema Ruby on Rails

describe BankAccount do before :each do @bank_account = BankAccount.new :balance => 250 end it "should not be valid" do @bank_account.should be_valid end it "should transfer funds successfully" do @bank_account.should_receive(:transfer) .with_args(:amount => 100) .and_return(true) @bank_account.execute_transaction(:amount => 100) @bank_account.balance.should == 150 endend

Page 179: Fisl 11 - Ecossistema Ruby on Rails
Page 180: Fisl 11 - Ecossistema Ruby on Rails

Funcionalidade: Adição Para evitar erros bobos Como um péssimo matemático Eu quero saber como somar dois números Cenário: Adicionar dois números Dado que eu digitei 50 na calculadora E que eu digitei 70 na calculadora Quando eu aperto o botão de soma Então o resultado na calculadora deve ser 120

Page 181: Fisl 11 - Ecossistema Ruby on Rails

Funcionalidade: Adição Para evitar erros bobos Como um péssimo matemático Eu quero saber como somar dois números Cenário: Adicionar dois números Dado que eu digitei 50 na calculadora E que eu digitei 70 na calculadora Quando eu aperto o botão de soma Então o resultado na calculadora deve ser 120

Page 182: Fisl 11 - Ecossistema Ruby on Rails
Page 183: Fisl 11 - Ecossistema Ruby on Rails
Page 184: Fisl 11 - Ecossistema Ruby on Rails

Não é mais demorado?

Page 185: Fisl 11 - Ecossistema Ruby on Rails

Cowboy Profissional

Produtividade

Page 186: Fisl 11 - Ecossistema Ruby on Rails

1 2 3 4 5 6 7 80

17.50

35.00

52.50

70.00

Produtividade

Tempo

Cowboy Profissional

Produtividade

Page 187: Fisl 11 - Ecossistema Ruby on Rails

1 2 3 4 5 6 7 80

17.50

35.00

52.50

70.00

Produtividade

Tempo

Cowboy Profissional

Produtividade

Page 188: Fisl 11 - Ecossistema Ruby on Rails

1 2 3 4 5 6 7 80

17.50

35.00

52.50

70.00

Produtividade

Tempo

Cowboy Profissional

Produtividade

Page 189: Fisl 11 - Ecossistema Ruby on Rails

1 2 3 4 5 6 7 80

17.50

35.00

52.50

70.00

Produtividade

Tempo

Cowboy Profissional

Produtividade

Page 190: Fisl 11 - Ecossistema Ruby on Rails

1 2 3 4 5 6 7 80

17.50

35.00

52.50

70.00

Produtividade

Tempo

Cowboy Profissional

Produtividade

Page 191: Fisl 11 - Ecossistema Ruby on Rails

1 2 3 4 5 6 7 80

17.50

35.00

52.50

70.00

Produtividade

Tempo

Cowboy Profissional

Produtividade

Page 192: Fisl 11 - Ecossistema Ruby on Rails

1 2 3 4 5 6 7 80

17.50

35.00

52.50

70.00

Produtividade

Tempo

Cowboy Profissional

Produtividade

Page 193: Fisl 11 - Ecossistema Ruby on Rails

1 2 3 4 5 6 7 80

17.50

35.00

52.50

70.00

Produtividade

Tempo

Cowboy Profissional

Produtividade

Page 194: Fisl 11 - Ecossistema Ruby on Rails

1 2 3 4 5 6 7 80

17.50

35.00

52.50

70.00

Produtividade

Tempo

Cowboy Profissional

Produtividade

Page 195: Fisl 11 - Ecossistema Ruby on Rails
Page 196: Fisl 11 - Ecossistema Ruby on Rails

237 Equipes137 Finalizadas

Page 197: Fisl 11 - Ecossistema Ruby on Rails

#horaextra

Page 198: Fisl 11 - Ecossistema Ruby on Rails

#horaextra

Page 199: Fisl 11 - Ecossistema Ruby on Rails

#horaextra

Page 200: Fisl 11 - Ecossistema Ruby on Rails

#horaextra

Page 201: Fisl 11 - Ecossistema Ruby on Rails

#horaextra

Page 202: Fisl 11 - Ecossistema Ruby on Rails

#horaextra

~4 horas/app

Page 203: Fisl 11 - Ecossistema Ruby on Rails
Page 204: Fisl 11 - Ecossistema Ruby on Rails

Empreendedorismo

Código e “Forma”

Ciclo de Vida de Projetos

Comunidade Open Source

Page 205: Fisl 11 - Ecossistema Ruby on Rails

Empreendedorismo

Código e “Forma”

Ciclo de Vida de Projetos

Comunidade Open Source

Page 206: Fisl 11 - Ecossistema Ruby on Rails

Empreendedorismo

Código e “Forma”

Ciclo de Vida de Projetos

Comunidade Open Source

Page 207: Fisl 11 - Ecossistema Ruby on Rails

Empreendedorismo

Código e “Forma”

Ciclo de Vida de Projetos

Comunidade Open Source

Page 208: Fisl 11 - Ecossistema Ruby on Rails

Pro!ssionalismo

Page 209: Fisl 11 - Ecossistema Ruby on Rails