Top Banner
2009, ano do Ruby on Rails no Brasil
90
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Rails - EXATEC2009

2009, ano do Ruby on Rails no Brasil

Page 3: Rails - EXATEC2009
Page 4: Rails - EXATEC2009

Ruby

Page 5: Rails - EXATEC2009

Yukihiro Matsumoto (Matz)

“Often people, especially computer engineers, focus on the machines. But in fact we need to focus on humans, on how humans care about doing programming or operating the application of the machines. We are the masters. They are the slaves.”

Page 6: Rails - EXATEC2009

Características

Page 7: Rails - EXATEC2009

Orientada a Objetos 2.times { puts “Olá” }

Características

Page 8: Rails - EXATEC2009

Orientada a Objetos

Tipagem dinâmica

2.times { puts “Olá” }

@nome = “Cauê Guerra”

Características

Page 9: Rails - EXATEC2009

Orientada a Objetos

Tipagem dinâmica

2.times { puts “Olá” }

@nome = “Cauê Guerra”

Características

Meta-programação Código que gera código

Page 10: Rails - EXATEC2009

Orientada a Objetos

Tipagem dinâmica

2.times { puts “Olá” }

@nome = “Cauê Guerra”

Características

Meta-programação

Programação funcional

Código que gera código

Page 11: Rails - EXATEC2009

Exemplo

Page 12: Rails - EXATEC2009

class CalculadorDeMDC { public int calcula(int a, int b) { if (b == 0) return a; else return calcula(b, a % b); }}

CalculadorDeMDC calculador = new CalculadorDeMDC();System.out.println(calculador.calcula(28, 7));

Java

Page 13: Rails - EXATEC2009

class CalculadorDeMDC { def calcula(a: Int, b: Int): Int = { if (b == 0) a else calcula(b, a % b) }}

Scala

val calculador = new CalculadorDeMDCprintln(calculador.calcula(28, 7))

Page 14: Rails - EXATEC2009

Ruby

class CalculadorDeMDC def calcula(a, b) if b == 0 a else calcula(b, a % b) end endend

calculador = CalculadorDeMDC.newputs calculador.calcula(28, 7)

Page 15: Rails - EXATEC2009

Um outro exemplo

Page 16: Rails - EXATEC2009

public String[] paraMaiuscula(String[] palavras) { String[] resposta = new String[palavras.length]; for (int i = 0; i < palavras.length; i++) resposta[i] = palavras[i].toUpperCase(); return resposta;}

Java

Page 17: Rails - EXATEC2009

Ruby

def paraMaiuscula(palavras) palavras.map { |palavra| palavra.upcase }end

Page 18: Rails - EXATEC2009

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

possíveis”Filosofia Ruby

Page 19: Rails - EXATEC2009

1995

Page 20: Rails - EXATEC2009

2001

Dave Thomas

Page 21: Rails - EXATEC2009

http://www.ruby-lang.org

Page 22: Rails - EXATEC2009

Thomas Enebo

JRuby

Ruby escrito 100% em Java

2006

Page 23: Rails - EXATEC2009
Page 24: Rails - EXATEC2009
Page 25: Rails - EXATEC2009
Page 26: Rails - EXATEC2009
Page 27: Rails - EXATEC2009

WTF?!?

Page 28: Rails - EXATEC2009

WTF?!?

Page 29: Rails - EXATEC2009
Page 30: Rails - EXATEC2009
Page 31: Rails - EXATEC2009
Page 32: Rails - EXATEC2009
Page 33: Rails - EXATEC2009
Page 34: Rails - EXATEC2009

http://rubyonrails.org/

Page 35: Rails - EXATEC2009

Pilares

Page 36: Rails - EXATEC2009

Convention over Configuration

CoC

Page 37: Rails - EXATEC2009

DRYDon’t Repeat Yourself

Page 38: Rails - EXATEC2009

MVC

Page 39: Rails - EXATEC2009

Browser

Page 40: Rails - EXATEC2009

Browser

ApplicationController

Page 41: Rails - EXATEC2009

Browser

ApplicationController

Controller

Page 42: Rails - EXATEC2009

Browser

ApplicationController

Controller Model

Page 43: Rails - EXATEC2009

Browser

ApplicationController

Controller Model

DB

Page 44: Rails - EXATEC2009

Browser

ApplicationController

Controller Model

DB

Page 45: Rails - EXATEC2009

Browser

ApplicationController

Controller Model

DB

Page 46: Rails - EXATEC2009

Browser

ApplicationController

Controller Model

DBView

Page 47: Rails - EXATEC2009
Page 48: Rails - EXATEC2009

AplicaçãoConfiguraçõesSchema evolution

Testes

Page 49: Rails - EXATEC2009

Model

View

Controller

Page 50: Rails - EXATEC2009

Testes

Page 51: Rails - EXATEC2009

TestesTest All The Fucking Time!

Page 52: Rails - EXATEC2009

TDDBDD

Test Driven Development

Behavior Driven Development

Page 53: Rails - EXATEC2009

it "should require acceptance of terms of service" do @job.attributes = valid_job_attributes.except(:terms_accepted) @job.should_not be_valid @job.terms_accepted = false @job.should_not be_valid @job.terms_accepted = true @job.should be_validend

RSpec

Page 54: Rails - EXATEC2009

Feature: Job listing In order to see the job offers in my area and start working As a user I want to see a list of jobs filtered by type and location

Scenario: Listing when there is no jobs Given there is no jobs When I go to "java" Then I should see "Desculpe, não existem vagas disponíveis." And the "OndeTrabalhar.com" field should contain "java"

Cucumber

Page 55: Rails - EXATEC2009

Rails não escala!

Page 56: Rails - EXATEC2009

Hoje o Redeparede.com serve 7,5 milhões de acessos por mês usando Ruby on Rails. Rails escala, depende de você!

Page 57: Rails - EXATEC2009

“Basecamp is now handling more than 50 million Rails requests per week. We're peaking out at around 200

req/sec. Damn!”

“Basecamp's average response time is 90ms and 87% of all requests

finish in less than 200ms.”

Page 58: Rails - EXATEC2009

Não conheço ninguém que use Rails

Page 59: Rails - EXATEC2009
Page 60: Rails - EXATEC2009
Page 61: Rails - EXATEC2009
Page 62: Rails - EXATEC2009
Page 63: Rails - EXATEC2009
Page 64: Rails - EXATEC2009
Page 65: Rails - EXATEC2009
Page 66: Rails - EXATEC2009
Page 67: Rails - EXATEC2009

Rails 3 = +

Page 68: Rails - EXATEC2009

Yehuda Katz

Page 69: Rails - EXATEC2009

José Valim

Page 70: Rails - EXATEC2009
Page 71: Rails - EXATEC2009
Page 72: Rails - EXATEC2009
Page 73: Rails - EXATEC2009
Page 74: Rails - EXATEC2009
Page 75: Rails - EXATEC2009
Page 76: Rails - EXATEC2009
Page 77: Rails - EXATEC2009
Page 78: Rails - EXATEC2009

Regis Pires

IFPI - Piauí

Page 79: Rails - EXATEC2009
Page 80: Rails - EXATEC2009
Page 81: Rails - EXATEC2009
Page 82: Rails - EXATEC2009

2

Page 83: Rails - EXATEC2009

3

Page 84: Rails - EXATEC2009

Formação Rails

RR-71: Desenvolvimento Ágil para Web 2.0 com Ruby on Rails

RR-75: Ruby e Rails avançados: lidando com problemas do dia a dia

Page 85: Rails - EXATEC2009

0

38

75

113

150

10

72

113

2007

2008

2009

Page 86: Rails - EXATEC2009

E daí?

Page 88: Rails - EXATEC2009
Page 89: Rails - EXATEC2009