+ All Categories
Home > Technology > Aprendendo Ruby e Rails (2012)

Aprendendo Ruby e Rails (2012)

Date post: 18-May-2015
Category:
Upload: fabio-akita
View: 1,076 times
Download: 5 times
Share this document with a friend
Description:
Palestra sobre o Ecossistema Ruby on Rails que apresentei aos estudantes da UFBA na Semcomp 2012
Popular Tags:
241
Donets Basin Mina de carvão-Ucrânia Genius is the gold in the mine; talent is the miner who works and brings it out. Lady Marguerite Blessington
Transcript
Page 1: Aprendendo Ruby e Rails (2012)

Donets BasinMina de carvão-Ucrânia

Genius is the gold in the mine; talent is the miner who works and brings it out.Lady Marguerite Blessington

“”

Page 2: Aprendendo Ruby e Rails (2012)

@akitaonrails

Ruby e Ruby on Rails - 2006

Rails Summit Latin America - 2008

RubyConf Brasil - 2010

Page 3: Aprendendo Ruby e Rails (2012)
Page 4: Aprendendo Ruby e Rails (2012)

EcossistemaRuby e Rails

Page 5: Aprendendo Ruby e Rails (2012)
Page 6: Aprendendo Ruby e Rails (2012)

http://slideshare.net/akitaonrails

Page 7: Aprendendo Ruby e Rails (2012)
Page 8: Aprendendo Ruby e Rails (2012)

Mercado

Page 9: Aprendendo Ruby e Rails (2012)
Page 10: Aprendendo Ruby e Rails (2012)

Ruby on Rails 2.3.14

Ruby on Rails 3.2.8

Ruby 1.8.7

Ruby 1.9.3

Page 11: Aprendendo Ruby e Rails (2012)

Ruby on Rails 2.3.14

Ruby on Rails 3.2.8

Ruby 1.8.7

Ruby 1.9.3

Page 12: Aprendendo Ruby e Rails (2012)

Ruby on Rails 2.3.14

Ruby on Rails 3.2.8

Ruby 1.8.7

Ruby 1.9.3

Page 13: Aprendendo Ruby e Rails (2012)

Ruby on Rails 2.3.14

Ruby on Rails 3.2.8

Ruby 1.8.7

Ruby 1.9.3

Page 14: Aprendendo Ruby e Rails (2012)
Page 15: Aprendendo Ruby e Rails (2012)

+230 mil sites

Page 16: Aprendendo Ruby e Rails (2012)
Page 17: Aprendendo Ruby e Rails (2012)
Page 18: Aprendendo Ruby e Rails (2012)
Page 19: Aprendendo Ruby e Rails (2012)
Page 20: Aprendendo Ruby e Rails (2012)
Page 21: Aprendendo Ruby e Rails (2012)
Page 22: Aprendendo Ruby e Rails (2012)
Page 23: Aprendendo Ruby e Rails (2012)
Page 24: Aprendendo Ruby e Rails (2012)
Page 25: Aprendendo Ruby e Rails (2012)
Page 26: Aprendendo Ruby e Rails (2012)
Page 27: Aprendendo Ruby e Rails (2012)
Page 28: Aprendendo Ruby e Rails (2012)
Page 29: Aprendendo Ruby e Rails (2012)
Page 30: Aprendendo Ruby e Rails (2012)
Page 31: Aprendendo Ruby e Rails (2012)
Page 32: Aprendendo Ruby e Rails (2012)
Page 33: Aprendendo Ruby e Rails (2012)
Page 34: Aprendendo Ruby e Rails (2012)
Page 35: Aprendendo Ruby e Rails (2012)

20%Global 2000 Organizations

Page 36: Aprendendo Ruby e Rails (2012)
Page 37: Aprendendo Ruby e Rails (2012)
Page 38: Aprendendo Ruby e Rails (2012)

~1 milhãode desenvolvedores

4M até 2013 (Gartner)

Page 39: Aprendendo Ruby e Rails (2012)
Page 40: Aprendendo Ruby e Rails (2012)
Page 41: Aprendendo Ruby e Rails (2012)

500 mercados44 países

Page 42: Aprendendo Ruby e Rails (2012)

+50M assinantes

Page 43: Aprendendo Ruby e Rails (2012)
Page 44: Aprendendo Ruby e Rails (2012)

+7M uniques/mês

Page 45: Aprendendo Ruby e Rails (2012)
Page 46: Aprendendo Ruby e Rails (2012)
Page 47: Aprendendo Ruby e Rails (2012)
Page 48: Aprendendo Ruby e Rails (2012)
Page 49: Aprendendo Ruby e Rails (2012)
Page 50: Aprendendo Ruby e Rails (2012)

Linguagens

Page 51: Aprendendo Ruby e Rails (2012)

1993

“Matz”

Page 52: Aprendendo Ruby e Rails (2012)

2011

Page 53: Aprendendo Ruby e Rails (2012)
Page 54: Aprendendo Ruby e Rails (2012)
Page 55: Aprendendo Ruby e Rails (2012)
Page 56: Aprendendo Ruby e Rails (2012)

hardwarex86

Assembler

Page 57: Aprendendo Ruby e Rails (2012)

hardwarex86

hardwarePowerPC

Assembler Assembler

Page 58: Aprendendo Ruby e Rails (2012)

hardwarex86

hardwarePowerPC

hardwareARM

Assembler Assembler Assembler

Page 59: Aprendendo Ruby e Rails (2012)

hardwarex86

hardwarePowerPC

hardwareARM

Assembler Assembler Assembler

C/C++/Pascal

Page 60: Aprendendo Ruby e Rails (2012)

hardwarex86

hardwarePowerPC

hardwareARM

Assembler Assembler Assembler

C/C++/Pascal

Perl Python

PHP

Page 61: Aprendendo Ruby e Rails (2012)

hardwarex86

hardwarePowerPC

hardwareARM

Assembler Assembler Assembler

C/C++/Pascal

Perl PythonJava Virtual Machine .NET Virtual

Machine

PHP

Page 62: Aprendendo Ruby e Rails (2012)

hardwarex86

hardwarePowerPC

hardwareARM

Assembler Assembler Assembler

C/C++/Pascal

Perl PythonJava Virtual Machine .NET Virtual

Machine

Java (bytecode) CILPHP

Page 63: Aprendendo Ruby e Rails (2012)

hardwarex86

hardwarePowerPC

hardwareARM

Assembler Assembler Assembler

C/C++/Pascal

Perl PythonJava Virtual Machine .NET Virtual

Machine

Java (bytecode) CIL

Java (linguagem) C# VB

PHP

Page 64: Aprendendo Ruby e Rails (2012)

hardwarex86

hardwarePowerPC

hardwareARM

Assembler Assembler Assembler

C/C++/Pascal

Perl PythonJava Virtual Machine .NET Virtual

Machine

Java (bytecode) CIL

Java (linguagem) C# VB

Scala Clojure

PHP

Page 65: Aprendendo Ruby e Rails (2012)

hardwarex86

hardwarePowerPC

hardwareARM

Assembler Assembler Assembler

C/C++/Pascal

Perl Python

Ruby

Java Virtual Machine .NET Virtual Machine

Java (bytecode) CIL

Java (linguagem) C# VB

JRuby Scala Clojure

PHP

Page 66: Aprendendo Ruby e Rails (2012)

PHP 4.3.8july 13, 2004

PHP 5.0.0july 13, 2004

O’Caml 3.08.0july 13, 2004

Java 2 (v5.0)september 30, 2004

Python 2.4november 30, 2004

PHP 4.3.10december 15, 2004

PHP 5.0.3december 15, 2004

Java 2 (v6.0 beta)december 2004

Tcl/Tk 8.4.7july 25, 2004

Tcl/Tk 8.4.8nov. 22, 2004

Tcl/Tk 8.4.9december 7, 2004

Ruby 1.8.2december 25, 2004

Perl 5.8.5july 21, 2004

Perl 5.8.6november 30, 2004

Java 2 (v1.4.2_06)november 23, 2004

Delphi 2005november 2004

Fortran 2003november 30, 2004

Java 2 (v5.0 update 3)april 28, 2005

Ada 2006 (draft)2005

2005

ECMA Eiffeljune 2005

Python 2.4.1march 30, 2005

O’Caml 3.08.2november 2004

Perl 5.8.7june 3, 2005

PHP 5.0.4april 3, 2005

PHP 5.0.5september 6, 2005

PHP 4.4.1october 31, 2005

Ruby 1.8.3september 21, 2005

Python 2.4.2september 28, 2005

Tcl/Tk 8.4.11june 28, 2005

PostScript level 3v 3017

september 11, 2005

C# 3.0(beta)

september 2005

C# 2.0november 2005

Tcl/Tk 8.4.12december 6, 2005

Delphi 2006october 30, 2005

Ruby 1.8.4december 24, 2005

PHP 5.1.0november 24, 2005

M ISOjanuary 6, 2005

Objective-C 2.0august 7, 2006

2006

Tcl/Tk 8.4.13april 19, 2006

Python 2.5september 19, 2006

Java 2 (v5.0 update 8)august 11, 2006

Ruby 1.8.5august 25, 2006

Perl 5.8.8february 2, 2006

PHP 5.1.6august 24, 2006

PHP 4.4.2january 13, 2006

PHP 4.4.4august 17, 2006

O’Caml 3.09.2april 14, 2006

Self 4.3june 30, 2006

Scheme R6RS (draft)september 14, 2006

Tcl/Tk 8.4.14october 19, 2006

PHP 5.2.0november 2, 2006

Java 6december 11, 2006

Tcl/Tk 8.4.15may 25, 2007

Python 2.5.1april 19, 2007

Ruby 1.8.6march 13, 2007

PHP 4.4.7may 3, 2007

PHP 5.2.3may 31, 2007

Java 2 (v5.0 update 12)may 31, 2007

2007

Tcl/Tk 8.5december 20, 2007

Java 6 update 2july 5, 2007

O’Caml 3.10.0may 16, 2007

Perl 5.10december 18, 2007

Ada 2005march 9, 2007

Python 3.0a2december 7, 2007

PHP 5.2.4august 30, 2007

PHP 5.2.5november 9, 2007

Scheme R6RSaugust 28, 2007

C# 3.5november 19, 2007

Delphi 2007march 2007

C# 3.0november 6, 2006

2008

Java 6 update 7july 11, 2008

Java 2 (v5.0 update 16)july 11, 2008

Java 2 (v1.4.2_18)july 11, 2008Ruby 1.8.7

may 31, 2008

PHP 4.4.8january 3, 2008

PHP 5.2.6may 1, 2008

Tcl/Tk 8.5.5october 15, 2008

Python 2.6october 1, 2008

Python 3.0december 3, 2008

PHP 4.4.9august 7, 2008

O’Caml 3.10.2february 29, 2008

Java 6 update 11december 2, 2008

Java 2 (v1.4.2_19)december 2, 2008

Java 2 (v5.0 update 17)december 2, 2008

C++0x draft2008

Ruby 1.9.1january 30, 2009

PHP 5.2.7december 4, 2008

PHP 5.2.8december 8, 2008

Python 3.0.1february 13, 2009

Python 2.6.1december 4, 2008

2009

Tcl/Tk 8.5.6january 2009

Tcl/Tk 8.5.7april 15, 2009

Python 2.6.2april 14, 2009

Java 6 update 14june 10, 2009

Java 2 (v5.0 update 18)march 24, 2009

PHP 5.2.9february 26, 2009

O’Caml 3.11.0december 4, 2008

PHP 5.3june 30, 2009

Python 3.1june 27, 2009

O’Caml 3.11.1june 12, 2009

Delphi 2009august 2008

Ruby 1.9.2 preview 1july 18, 2009

C++1x draftjuly 22, 2009

Objective-C 2.1august 28, 2009

Perl 5.11.0october 2, 2009

Python 2.6.3october 2, 2009

Java 6 update 24february 15, 2011

Java 2 (v5.0 update 21)september 11, 2009

Delphi 2010august 2009

Haskell 2010(announced)

november 2009

Python 2.7july 4, 2010

Tcl/Tk 8.5.9september 8, 2010

Ruby 1.9.2august 18, 2010

Perl 5.12.0april 12, 2010

PHP 5.3.5january 6, 2011

Haskell HP 2010.2.0.0july 2010

O’Caml 3.12.0august 2, 2010

Fortran 2008september 2010

2010

C# 4.0april 12, 2010

2011

Python 3.2february 20, 2011

Python 2.7.1november 27, 2010

Perl 5.12.3january 21, 2011

1 2 3 4

Page 67: Aprendendo Ruby e Rails (2012)

Perl 5.6.0march 28, 2000

Java 2 (v1.3)may 8, 2000

O’Caml 3.00june 2000

C#june 26, 2000

Python 1.6september 5, 2000

Python 2.0october 16, 2000

Ruby 1.6.1september 27, 2000

Perl 5.7,0september 2, 2000

Ruby 1.6.5september 19, 2001

Python 2.2december 21, 2001

Python 2.1april 17, 2001

C#(ECMA)

december 13, 2001

Java 2 (v1.4)early access

february 6, 2002

JScript

Self 4.1august 7, 2001

O’Caml 3.02july 30, 2001

O’Caml 3.03dec 10, 2001

PHP 4.0may 22, 2000

PHP 4.1.0december 8, 2001

O’Caml 3.04dec 12, 2001

Tcl/Tk 8.3october 22, 2001

Delphi 6may 1, 2001

2000

VB.NET(Visual Basic 7.0)

2001

ISE Eiffel 52001

Unicon2001

Active Oberon2001

Ruby 1.6.7march 1, 2002

Python 2.2.1april 10, 2002

Perl 5.8.0july 18, 2002

PHP 4.2.0april 22, 2002

PHP 4.2.2july 22, 2002

Java 2 (v1.4.0_01)june 4, 2002

O’Caml 3.05july 29, 2002

O’Caml 3.06august 20, 2002

Java 2 (v1.4.1)september 2002

PHP 4.2.3september 6, 2002

Fortran 2000(draft)

september 30, 2002

Tcl/Tk 8.4september 10, 2002

Delphi 7august 6, 2002

Self 4.1.6september 2002

Python 2.2.2october 14, 2002

PHP 4.3.0december 27, 2002

2002

PHP 4.3.1feb. 17, 2003

Ruby 1.6.8december 24, 2002

Java 2(v1.4.1_02)

february 27, 2003

Python 2.3a2february 19, 2003

Tcl/Tk 8.4.1october 22, 2002

C#(ISO)

march 28, 2003

Tcl/Tk 8.4.2march 3, 2003

Tcl/Tk 8.4.3may 20, 2003

PHP 4.3.2may 29, 2003

Python 2.2.3may 30, 2003

Java 2 (v1.4.2)april 29, 2003

COBOL 2002 ISO/ANSIdecember 2002

JavaScript 2.0(draft 4)

april 26, 2002ECMAScript ed4 (draft)

2002

Haskell 98(revised)

december 2002

Python 2.3july 29, 2003

Java 2 (v1.4.1_03)june 11, 2003

2003

PHP 4.3.3august 25, 2003

Java 2 (v1.4.2_01)august 26, 2003

Ruby 1.8august 4, 2003

Python 2.3.1september 23, 2003

Perl 5.8.1september 26, 2003

Java 2 (v1.4.2_02)october 22, 2003

C# 2.0(beta)

july 2003

Delphi 8november 2003

PHP 4.3.4november 3, 2003

Java 2 (v1.4.2_03)december 13, 2003

Python 2.3.2october 3, 2003

Python 2.3.3december 19, 2003

Ruby 1.8.1december 25, 2003

Java 2 (v1.5.0)(beta 1)

february 5, 2004

O’Caml 3.07september 29, 2003

Tcl/Tk 8.4.6march 1, 2004

Self 4.2.1april 3, 2004

PHP 4.3.5march 26,

2004

Perl 5.8.2november 5, 2003

Perl 5.8.3january 1, 2004

Tcl/Tk 8.4.5november 24, 2003

Tcl/Tk 8.4.4july 22, 2003

PHP 4.3.6april 15,

2004

Java 2 (v5.0) (beta 2)june 28, 2004

Java 2 (v1.4.2_04)march 8, 2004

Java 2 (v1.4.2_05)june 30, 2004

PHP 4.3.7june 3,2004

Python 2.3.4may 27, 2004

Perl 5.8.4april 23, 2004

2004PostScript level 3

v 30162003

C++03 ISO/IEC2003

PHP 4.3.8july 13, 2004

PHP 5.0.0july 13, 2004

O’Caml 3.08.0july 13, 2004

Java 2 (v5.0)september 30, 2004

Python 2.4november 30, 2004

PHP 4.3.10december 15, 2004

PHP 5.0.3december 15, 2004

Java 2 (v6.0 beta)december 2004

Tcl/Tk 8.4.7july 25, 2004

Tcl/Tk 8.4.8nov. 22, 2004

Tcl/Tk 8.4.9december 7, 2004

Ruby 1.8.2december 25, 2004

Perl 5.8.5july 21, 2004

Perl 5.8.6november 30, 2004

Java 2 (v1.4.2_06)november 23, 2004

Delphi 2005november 2004

Fortran 2003november 30, 2004

Java 2 (v5.0 update 3)april 28, 2005

Ada 2006 (draft)2005

2005

ECMA Eiffeljune 2005

Python 2.4.1march 30, 2005

O’Caml 3.08.2november 2004

Perl 5.8.7june 3, 2005

PHP 5.0.4april 3, 2005

PHP 5.0.5september 6, 2005

PHP 4.4.1october 31, 2005

Ruby 1.8.3september 21, 2005

Python 2.4.2september 28, 2005

Tcl/Tk 8.4.11june 28, 2005

PostScript level 3v 3017

september 11, 2005

C# 3.0(beta)

september 2005

C# 2.0november 2005

Tcl/Tk 8.4.12december 6, 2005

Delphi 2006october 30, 2005

Ruby 1.8.4december 24, 2005

PHP 5.1.0november 24, 2005

M ISOjanuary 6, 2005

1 2 3 4

Page 68: Aprendendo Ruby e Rails (2012)

Pascal AFNOR1983

Object Pascal1985

PostScript1982

Smalltalk-801980

ANSI C(C89)1989

Objective-C1983

C with Classesapril 1980 C++

july 1983

Concurrent C1984

Eiffel1986

nawk1985

COBOL 85 ISO/ANSI1985

Common Lisp1984

Scheme 841984

Ada 83 ANSIjanuary 1983

Ada ISO1987

Oberon1987

Prolog IIoctober 1982

OO Forth1987

Clos1989

Object Logo1986

Prolog III1984

APL 2august 1984

SML1984

Modula 31988

Perl 3.000october 18, 1989

Perl 2.000january 5, 1988

Perl 1.000december 18, 1987

Tclmid 1988

Tcl/Tkend 1988

Rex 2.001980

Rex 3.001982

Rexx 3.201984

Caml1987

Eiffel 21988

ABC1987

B1981

Haskell 1.01987

Self

BorlandTurbo Pascal

Cedar1983

1980 1985

MUMPS (FIPS)1986

Sharp APL

A1988

Miranda1982

KRC1981

Forth-831983

ANS Forth1986

ARM C++1989

BASICA1981

GW-Basic1983

MS Basic PDS 7.01989

QuickBasic 1.01985

QuickBasic 4.51988

Fortran 90 ISO1991

SML ‘901990

Oakjune 1991

Perl 4.000march 21, 1991

PostScript level 21992

Perl 5.000october 18, 1994

Common Lisp ANSIdecember 8, 1994

Scheme IEEE1990

Python1991

NetRexx1991

ISO C(C90)

december 15, 1990

Caml 2-6.11991

Caml 3.11993

Visual Basic 1.0may 20, 1991

Oberon-21991

Sather 0.1june 1991

Sather 1.0mid-1994

Rubyfebruary 24, 1993

Haskell 1.1april 1, 1990

Haskell 1.2march 1992

Cmm1992

1990

MUMPS ISO1992

M1994

A+1992

J1990

Visual Basic 2.0march 1992

Visual Basic 3.0june 93

Eiffel 31993

MS PDS 7.11990

SML ‘971997

Java 2 (v1.2)december 8, 1998

PostScript level 3september 11, 1996

C++98 ANSI/ISO1998

APL961996

OO COBOL1997

Scheme R5RS1998

Ada 951995

Java 1may 23, 1995

Delphimarch 2, 1995

Delphi 5august, 1999

Modula-2 ISOjune 1, 1996

Tcl/Tk 8.1april 1999

Python 1.5.2april 13, 1999

Perl 5.005_50july 26, 1998

NetRexx 1.150july 23, 1999

Object Rexxfebruary 25, 1997

Prolog IV1997

ISO C(C95)

april 1, 1996

ISO C (C99)december 1, 1999

Objective Caml1996 O’Caml 2

1998

Visual Basic 6.0june 16, 1998

Sather 1.1september 1995

Sather 1.2.1november 4, 1999

Ruby 0.95december 1995

Ruby 1.1 alpha 0august 13, 1997 Ruby 1.3.2

april 2, 1999

Haskell 1.3may 1996

Haskell 1.4april 1997

Haskell 98february 1999

Fortran 95 ISOdecember 15, 1997

LiveScript1995

JavaScriptdecember 1995

JavaScript 1.5

ECMAScriptjune 1997

ECMAScript ed3december 1999

JScriptmay 1996

Self 4.0july 10, 1995

PHP/FI1995 PHP 2.0

nov. 13, 1997PHP 3.0

june 6, 1998

O’Caml 1.0.7december 11, 1997

Tcl/Tk 8.2.3dec. 16, 1999

Eiffel 4december 11, 1996

Eiffel 4.2february 6, 1998

1995

M ANSIdec 8, 1995

Open Mdec 11, 1995

M ISO1999

K1996

Visual Basic 4.0september 1995

Visual Basic 5.0april 1997

ANSI Rexx

ISO Forth1997

ANSI Smalltalkmay 19, 1998

Modula-2 ISOGeneric Extensiondecember 19, 1998

JavaScript 2.0(draft 1)

february 18, 1999

Perl 5.6.0march 28, 2000

Java 2 (v1.3)may 8, 2000

O’Caml 3.00june 2000

C#june 26, 2000

Python 1.6september 5, 2000

Python 2.0october 16, 2000

Ruby 1.6.1september 27, 2000

Perl 5.7,0september 2, 2000

Ruby 1.6.5september 19, 2001

Python 2.2december 21, 2001

Python 2.1april 17, 2001

C#(ECMA)

december 13, 2001

Java 2 (v1.4)early access

february 6, 2002

JScript

Self 4.1august 7, 2001

O’Caml 3.02july 30, 2001

O’Caml 3.03dec 10, 2001

PHP 4.0may 22, 2000

PHP 4.1.0december 8, 2001

O’Caml 3.04dec 12, 2001

Tcl/Tk 8.3october 22, 2001

Delphi 6may 1, 2001

2000

VB.NET(Visual Basic 7.0)

2001

ISE Eiffel 52001

Unicon2001

Active Oberon2001

1 2 3 4

Page 69: Aprendendo Ruby e Rails (2012)

Languagesfebruary 27, 2011

© Éric Lévénez 1999-2011<http://www.levenez.com/lang/>

FORTRAN II1957

FORTRANnovember 1954

FORTRAN Ioctober 1956

FORTRAN IIIend-1958

Flow-Matic1958

ALGOL 581958

Lisp1958

Lisp 11959

COBOL1959

B-O1957

1954 1957

IAL1958

JOVIAL1959

Forth1968

BASICmay 1, 1964

COBOL 611961

COBOL1965

FORTRAN IV(Fortran 66 ANS)

1966FORTRAN IV

1962

BCPLjuly 1967

ALGOL 68december

1968

PL/I1964

B1969

Simula 671967

COBOL 68 ANS1968

APL1960

ALGOL 601960

SNOBOL1962

Simula I1964

Lisp 1.51962

SNOBOL 2april 1964

SNOBOL 31965

SNOBOL 41967

Logo1968

COBOL 61 Extended

1962

CPL1963

1960 1965

MUMPS1966

ISWIM1966

JOVIAL I1960

JOVIAL II1961

JOVIAL 31965

CORAL 641964

CORAL 661966

TELCOMP1965

JOSS1964

GOGOL1964

GOGOL III1967

Sail1968

sh1969

ALGOL W1966

Ada1979

FORTRAN V(Fortran 77 ANSI)

april 1978

CLU1974

COBOL 74 ANSI1974

Modula1975

Modula 21979

C (K&R)1978

C1971

awk1978

cshoctober 1978

Scheme MIT1978

Scheme1975

Prolog1970

Icon1977

Smalltalk-721972

PL/1 ANS1976

PL/M1972

Smalltalk-761976

Smalltalk-741974

Smalltalk-781978

Rex 1.00may 1979

MS Basic 2.0july 1975

Pascal1970

ML1973

Mesa1977

1970 1975

MUMPS (ANSI)september 15, 1977

SASL1976

sed1973

FIG-Forth1978

Mainsail1975

SL51976

Smalltalk1971

Classic C

Pascal AFNOR1983

Object Pascal1985

PostScript1982

Smalltalk-801980

ANSI C(C89)1989

Objective-C1983

C with Classesapril 1980 C++

july 1983

Concurrent C1984

Eiffel1986

nawk1985

COBOL 85 ISO/ANSI1985

Common Lisp1984

Scheme 841984

Ada 83 ANSIjanuary 1983

Ada ISO1987

Oberon1987

Prolog IIoctober 1982

OO Forth1987

Clos1989

Object Logo1986

Prolog III1984

APL 2august 1984

SML1984

Modula 31988

Perl 3.000october 18, 1989

Perl 2.000january 5, 1988

Perl 1.000december 18, 1987

Tclmid 1988

Tcl/Tkend 1988

Rex 2.001980

Rex 3.001982

Rexx 3.201984

Caml1987

Eiffel 21988

ABC1987

B1981

Haskell 1.01987

Self

BorlandTurbo Pascal

Cedar1983

1980 1985

MUMPS (FIPS)1986

Sharp APL

A1988

Miranda1982

KRC1981

Forth-831983

ANS Forth1986

ARM C++1989

BASICA1981

GW-Basic1983

MS Basic PDS 7.01989

QuickBasic 1.01985

QuickBasic 4.51988

1 2 3 4

Page 70: Aprendendo Ruby e Rails (2012)

Languagesfebruary 27, 2011

© Éric Lévénez 1999-2011<http://www.levenez.com/lang/>

FORTRAN II1957

FORTRANnovember 1954

FORTRAN Ioctober 1956

FORTRAN IIIend-1958

Flow-Matic1958

ALGOL 581958

Lisp1958

Lisp 11959

COBOL1959

B-O1957

1954 1957

IAL1958

JOVIAL1959

Page 71: Aprendendo Ruby e Rails (2012)

Languagesfebruary 27, 2011

© Éric Lévénez 1999-2011<http://www.levenez.com/lang/>

FORTRAN II1957

FORTRANnovember 1954

FORTRAN Ioctober 1956

FORTRAN IIIend-1958

Flow-Matic1958

ALGOL 581958

Lisp1958

Lisp 11959

COBOL1959

B-O1957

1954 1957

IAL1958

JOVIAL1959

FORTRAN

Page 72: Aprendendo Ruby e Rails (2012)

Languagesfebruary 27, 2011

© Éric Lévénez 1999-2011<http://www.levenez.com/lang/>

FORTRAN II1957

FORTRANnovember 1954

FORTRAN Ioctober 1956

FORTRAN IIIend-1958

Flow-Matic1958

ALGOL 581958

Lisp1958

Lisp 11959

COBOL1959

B-O1957

1954 1957

IAL1958

JOVIAL1959

FORTRAN

LISP

Page 73: Aprendendo Ruby e Rails (2012)

Fortran 90 ISO1991

SML ‘901990

Oakjune 1991

Perl 4.000march 21, 1991

PostScript level 21992

Perl 5.000october 18, 1994

Common Lisp ANSIdecember 8, 1994

Scheme IEEE1990

Python1991

NetRexx1991

ISO C(C90)

december 15, 1990

Caml 2-6.11991

Caml 3.11993

Visual Basic 1.0may 20, 1991

Oberon-21991

Sather 0.1june 1991

Sather 1.0mid-1994

Rubyfebruary 24, 1993

Haskell 1.1april 1, 1990

Haskell 1.2march 1992

Cmm1992

1990

MUMPS ISO1992

M1994

A+1992

J1990

Visual Basic 2.0march 1992

Visual Basic 3.0june 93

Eiffel 31993

MS PDS 7.11990

SML ‘971997

Java 2 (v1.2)december 8, 1998

PostScript level 3september 11, 1996

C++98 ANSI/ISO1998

APL961996

OO COBOL1997

Scheme R5RS1998

Ada 951995

Java 1may 23, 1995

Delphimarch 2, 1995

Delphi 5august, 1999

Modula-2 ISOjune 1, 1996

Tcl/Tk 8.1april 1999

Python 1.5.2april 13, 1999

Perl 5.005_50july 26, 1998

NetRexx 1.150july 23, 1999

Object Rexxfebruary 25, 1997

Prolog IV1997

ISO C(C95)

april 1, 1996

ISO C (C99)december 1, 1999

Objective Caml1996 O’Caml 2

1998

Visual Basic 6.0june 16, 1998

Sather 1.1september 1995

Sather 1.2.1november 4, 1999

Ruby 0.95december 1995

Ruby 1.1 alpha 0august 13, 1997 Ruby 1.3.2

april 2, 1999

Haskell 1.3may 1996

Haskell 1.4april 1997

Haskell 98february 1999

Fortran 95 ISOdecember 15, 1997

LiveScript1995

JavaScriptdecember 1995

JavaScript 1.5

ECMAScriptjune 1997

ECMAScript ed3december 1999

JScriptmay 1996

Self 4.0july 10, 1995

PHP/FI1995 PHP 2.0

nov. 13, 1997PHP 3.0

june 6, 1998

O’Caml 1.0.7december 11, 1997

Tcl/Tk 8.2.3dec. 16, 1999

Eiffel 4december 11, 1996

Eiffel 4.2february 6, 1998

1995

M ANSIdec 8, 1995

Open Mdec 11, 1995

M ISO1999

K1996

Visual Basic 4.0september 1995

Visual Basic 5.0april 1997

ANSI Rexx

ISO Forth1997

ANSI Smalltalkmay 19, 1998

Modula-2 ISOGeneric Extensiondecember 19, 1998

JavaScript 2.0(draft 1)

february 18, 1999

Pascal AFNOR1983

Object Pascal1985

PostScript1982

Smalltalk-801980

ANSI C(C89)1989

Objective-C1983

C with Classesapril 1980 C++

july 1983

Concurrent C1984

Eiffel1986

nawk1985

COBOL 85 ISO/ANSI1985

Common Lisp1984

Scheme 841984

Ada 83 ANSIjanuary 1983

Ada ISO1987

Oberon1987

Prolog IIoctober 1982

OO Forth1987

Clos1989

Object Logo1986

Prolog III1984

APL 2august 1984

SML1984

Modula 31988

Perl 3.000october 18, 1989

Perl 2.000january 5, 1988

Perl 1.000december 18, 1987

Tclmid 1988

Tcl/Tkend 1988

Rex 2.001980

Rex 3.001982

Rexx 3.201984

Caml1987

Eiffel 21988

ABC1987

B1981

Haskell 1.01987

Self

BorlandTurbo Pascal

Cedar1983

1980 1985

MUMPS (FIPS)1986

Sharp APL

A1988

Miranda1982

KRC1981

Forth-831983

ANS Forth1986

ARM C++1989

BASICA1981

GW-Basic1983

MS Basic PDS 7.01989

QuickBasic 1.01985

QuickBasic 4.51988

Page 74: Aprendendo Ruby e Rails (2012)

Fortran 90 ISO1991

SML ‘901990

Oakjune 1991

Perl 4.000march 21, 1991

PostScript level 21992

Perl 5.000october 18, 1994

Common Lisp ANSIdecember 8, 1994

Scheme IEEE1990

Python1991

NetRexx1991

ISO C(C90)

december 15, 1990

Caml 2-6.11991

Caml 3.11993

Visual Basic 1.0may 20, 1991

Oberon-21991

Sather 0.1june 1991

Sather 1.0mid-1994

Rubyfebruary 24, 1993

Haskell 1.1april 1, 1990

Haskell 1.2march 1992

Cmm1992

1990

MUMPS ISO1992

M1994

A+1992

J1990

Visual Basic 2.0march 1992

Visual Basic 3.0june 93

Eiffel 31993

MS PDS 7.11990

SML ‘971997

Java 2 (v1.2)december 8, 1998

PostScript level 3september 11, 1996

C++98 ANSI/ISO1998

APL961996

OO COBOL1997

Scheme R5RS1998

Ada 951995

Java 1may 23, 1995

Delphimarch 2, 1995

Delphi 5august, 1999

Modula-2 ISOjune 1, 1996

Tcl/Tk 8.1april 1999

Python 1.5.2april 13, 1999

Perl 5.005_50july 26, 1998

NetRexx 1.150july 23, 1999

Object Rexxfebruary 25, 1997

Prolog IV1997

ISO C(C95)

april 1, 1996

ISO C (C99)december 1, 1999

Objective Caml1996 O’Caml 2

1998

Visual Basic 6.0june 16, 1998

Sather 1.1september 1995

Sather 1.2.1november 4, 1999

Ruby 0.95december 1995

Ruby 1.1 alpha 0august 13, 1997 Ruby 1.3.2

april 2, 1999

Haskell 1.3may 1996

Haskell 1.4april 1997

Haskell 98february 1999

Fortran 95 ISOdecember 15, 1997

LiveScript1995

JavaScriptdecember 1995

JavaScript 1.5

ECMAScriptjune 1997

ECMAScript ed3december 1999

JScriptmay 1996

Self 4.0july 10, 1995

PHP/FI1995 PHP 2.0

nov. 13, 1997PHP 3.0

june 6, 1998

O’Caml 1.0.7december 11, 1997

Tcl/Tk 8.2.3dec. 16, 1999

Eiffel 4december 11, 1996

Eiffel 4.2february 6, 1998

1995

M ANSIdec 8, 1995

Open Mdec 11, 1995

M ISO1999

K1996

Visual Basic 4.0september 1995

Visual Basic 5.0april 1997

ANSI Rexx

ISO Forth1997

ANSI Smalltalkmay 19, 1998

Modula-2 ISOGeneric Extensiondecember 19, 1998

JavaScript 2.0(draft 1)

february 18, 1999

Pascal AFNOR1983

Object Pascal1985

PostScript1982

Smalltalk-801980

ANSI C(C89)1989

Objective-C1983

C with Classesapril 1980 C++

july 1983

Concurrent C1984

Eiffel1986

nawk1985

COBOL 85 ISO/ANSI1985

Common Lisp1984

Scheme 841984

Ada 83 ANSIjanuary 1983

Ada ISO1987

Oberon1987

Prolog IIoctober 1982

OO Forth1987

Clos1989

Object Logo1986

Prolog III1984

APL 2august 1984

SML1984

Modula 31988

Perl 3.000october 18, 1989

Perl 2.000january 5, 1988

Perl 1.000december 18, 1987

Tclmid 1988

Tcl/Tkend 1988

Rex 2.001980

Rex 3.001982

Rexx 3.201984

Caml1987

Eiffel 21988

ABC1987

B1981

Haskell 1.01987

Self

BorlandTurbo Pascal

Cedar1983

1980 1985

MUMPS (FIPS)1986

Sharp APL

A1988

Miranda1982

KRC1981

Forth-831983

ANS Forth1986

ARM C++1989

BASICA1981

GW-Basic1983

MS Basic PDS 7.01989

QuickBasic 1.01985

QuickBasic 4.51988

Page 75: Aprendendo Ruby e Rails (2012)
Page 76: Aprendendo Ruby e Rails (2012)
Page 77: Aprendendo Ruby e Rails (2012)
Page 78: Aprendendo Ruby e Rails (2012)
Page 79: Aprendendo Ruby e Rails (2012)
Page 80: Aprendendo Ruby e Rails (2012)
Page 81: Aprendendo Ruby e Rails (2012)

Orientação a Objetos

Page 82: Aprendendo Ruby e Rails (2012)
Page 83: Aprendendo Ruby e Rails (2012)
Page 84: Aprendendo Ruby e Rails (2012)

Uni!ed Model Language

Page 85: Aprendendo Ruby e Rails (2012)

Diagrama de “Classes”!

Page 86: Aprendendo Ruby e Rails (2012)

Alan Kay“A melhor

maneira deprever o futuro é

inventá-lo.”

Page 87: Aprendendo Ruby e Rails (2012)

Alan Kay“Eu inventei o

termo“Orientação a

Objetos”e posso dizer que

eu não tinhaC++ em mente.”

Page 88: Aprendendo Ruby e Rails (2012)

Alan Kay

Page 89: Aprendendo Ruby e Rails (2012)
Page 90: Aprendendo Ruby e Rails (2012)
Page 91: Aprendendo Ruby e Rails (2012)
Page 92: Aprendendo Ruby e Rails (2012)
Page 93: Aprendendo Ruby e Rails (2012)
Page 94: Aprendendo Ruby e Rails (2012)
Page 95: Aprendendo Ruby e Rails (2012)

Framework para Aplicações Web

Page 96: Aprendendo Ruby e Rails (2012)

gem install rails

Page 97: Aprendendo Ruby e Rails (2012)

rails new projeto

Page 98: Aprendendo Ruby e Rails (2012)

servidor web

Rack Middlewares

Routes

Controller

ModelView

Request

Page 99: Aprendendo Ruby e Rails (2012)

servidor web

Rack Middlewares

Routes

Controller

ModelView

Request

Page 100: Aprendendo Ruby e Rails (2012)

servidor web

Rack Middlewares

Routes

Controller

ModelView

Request

Page 101: Aprendendo Ruby e Rails (2012)

servidor web

Rack Middlewares

Routes

Controller

ModelView

Request

Page 102: Aprendendo Ruby e Rails (2012)

servidor web

Rack Middlewares

Routes

Controller

ModelView

Request

Page 103: Aprendendo Ruby e Rails (2012)

servidor web

Rack Middlewares

Routes

Controller

ModelView

Request

Page 104: Aprendendo Ruby e Rails (2012)

servidor web

Rack Middlewares

Routes

Controller

ModelView

Request

Page 105: Aprendendo Ruby e Rails (2012)

servidor web

Rack Middlewares

Routes

Controller

ModelView

Request

Page 106: Aprendendo Ruby e Rails (2012)

servidor web

Rack Middlewares

Routes

Controller

ModelView

Request

Page 107: Aprendendo Ruby e Rails (2012)

servidor web

Rack Middlewares

Routes

Controller

ModelView

Request

Page 108: Aprendendo Ruby e Rails (2012)

servidor web

Rack Middlewares

Routes

Controller

ModelView

Response Request

Page 109: Aprendendo Ruby e Rails (2012)
Page 110: Aprendendo Ruby e Rails (2012)
Page 111: Aprendendo Ruby e Rails (2012)

~40 mil gems

~20 GB

Page 112: Aprendendo Ruby e Rails (2012)
Page 113: Aprendendo Ruby e Rails (2012)

bundle install

Page 114: Aprendendo Ruby e Rails (2012)
Page 115: Aprendendo Ruby e Rails (2012)
Page 116: Aprendendo Ruby e Rails (2012)
Page 117: Aprendendo Ruby e Rails (2012)
Page 118: Aprendendo Ruby e Rails (2012)

Estrutura de Diretórios Similar

Page 119: Aprendendo Ruby e Rails (2012)
Page 120: Aprendendo Ruby e Rails (2012)

RubyGem “Jar”

Rake Ant, Make

Bundler* Maven

* não baixa toda a internet

Page 121: Aprendendo Ruby e Rails (2012)

Gems included by the bundle: * RedCloth (4.2.9) * actionmailer (4.0.0.beta) * actionpack (4.0.0.beta) * activemodel (4.0.0.beta) * activerecord (4.0.0.beta) * activesupport (4.0.0.beta) * arel (3.0.2) * bcrypt-ruby (3.0.1) * builder (3.0.0) * bundler (1.1.3) * erubis (2.7.0) * execjs (1.3.0) * hike (1.2.1) * i18n (0.6.0) * journey (1.0.1.20120208102204 b0ef9f1) * jquery-rails (2.0.2) * json (1.6.6) * mail (2.4.4) * memcache-client (1.8.5) * metaclass (0.0.1) * mime-types (1.18) * mocha (0.10.5) * multi_json (1.3.1)

* mysql (2.8.1)* mysql2 (0.3.11)* nokogiri (1.5.2)* pg (0.13.2)* polyglot (0.3.3)* rack (1.4.1)* rack-cache (1.2)* rack-test (0.6.1 cab8eb9)* rails (4.0.0.beta 86c640a)* railties (4.0.0.beta)* rake (0.9.2.2)* rdoc (3.12)* ruby-prof (0.10.8)* sdoc (0.3.15 055fe2a)* sprockets (2.3.2)* sprockets-rails (1.0.0)* sqlite3 (1.3.5)* thor (0.14.6)* tilt (1.3.3)* treetop (1.4.10)* tzinfo (0.3.33)* uglifier (1.2.4)* w3c_validators (1.2)* yajl-ruby (1.1.0)

Page 122: Aprendendo Ruby e Rails (2012)

Gems included by the bundle: * RedCloth (4.2.9) * actionmailer (4.0.0.beta) * actionpack (4.0.0.beta) * activemodel (4.0.0.beta) * activerecord (4.0.0.beta) * activesupport (4.0.0.beta) * arel (3.0.2) * bcrypt-ruby (3.0.1) * builder (3.0.0) * bundler (1.1.3) * erubis (2.7.0) * execjs (1.3.0) * hike (1.2.1) * i18n (0.6.0) * journey (1.0.1.20120208102204 b0ef9f1) * jquery-rails (2.0.2) * json (1.6.6) * mail (2.4.4) * memcache-client (1.8.5) * metaclass (0.0.1) * mime-types (1.18) * mocha (0.10.5) * multi_json (1.3.1)

* mysql (2.8.1)* mysql2 (0.3.11)* nokogiri (1.5.2)* pg (0.13.2)* polyglot (0.3.3)* rack (1.4.1)* rack-cache (1.2)* rack-test (0.6.1 cab8eb9)* rails (4.0.0.beta 86c640a)* railties (4.0.0.beta)* rake (0.9.2.2)* rdoc (3.12)* ruby-prof (0.10.8)* sdoc (0.3.15 055fe2a)* sprockets (2.3.2)* sprockets-rails (1.0.0)* sqlite3 (1.3.5)* thor (0.14.6)* tilt (1.3.3)* treetop (1.4.10)* tzinfo (0.3.33)* uglifier (1.2.4)* w3c_validators (1.2)* yajl-ruby (1.1.0)

Page 123: Aprendendo Ruby e Rails (2012)

Infraestrutura

Page 124: Aprendendo Ruby e Rails (2012)

Web Server

Rack Middlewares

Routes

Controller

ModelView

Response Request

Page 125: Aprendendo Ruby e Rails (2012)

Web Server

Rack Middlewares

Routes

Controller

ModelView

Response Request

Page 126: Aprendendo Ruby e Rails (2012)

Web Server

Rack Middlewares

Routes

Controller

ModelView

Response Request

Application Server Rack:

Mongrel,Thin,

Passenger,Unicorn

Page 127: Aprendendo Ruby e Rails (2012)

Web Server

Rack Middlewares

Routes

Controller

ModelView

Response Request

Web Server:NginX

Apache

Application Server Rack:

Mongrel,Thin,

Passenger,Unicorn

Page 128: Aprendendo Ruby e Rails (2012)
Page 129: Aprendendo Ruby e Rails (2012)
Page 130: Aprendendo Ruby e Rails (2012)
Page 131: Aprendendo Ruby e Rails (2012)
Page 132: Aprendendo Ruby e Rails (2012)
Page 133: Aprendendo Ruby e Rails (2012)
Page 134: Aprendendo Ruby e Rails (2012)
Page 135: Aprendendo Ruby e Rails (2012)
Page 136: Aprendendo Ruby e Rails (2012)
Page 137: Aprendendo Ruby e Rails (2012)
Page 138: Aprendendo Ruby e Rails (2012)
Page 139: Aprendendo Ruby e Rails (2012)

Web Server

App Server

Database

Page 140: Aprendendo Ruby e Rails (2012)

Web Server

App Server App Server

Database

Page 141: Aprendendo Ruby e Rails (2012)

Web Server Web Server

App Server App Server

Database

Page 142: Aprendendo Ruby e Rails (2012)

Web Server Web Server Web Server

App Server App Server

Database

Page 143: Aprendendo Ruby e Rails (2012)

Web Server Web Server Web Server

App Server App Server

Load Balancer

Database

Page 144: Aprendendo Ruby e Rails (2012)

Web Server Web Server Web Server

App Server App Server

Load Balancer

Database

Database

Page 145: Aprendendo Ruby e Rails (2012)

Web Server Web Server Web Server

App Server App Server

Load Balancer

Database

Database

Cache

Page 146: Aprendendo Ruby e Rails (2012)

Web Server Web Server Web Server

App Server App Server

Load Balancer

Database

Database

Cache Queue

Page 147: Aprendendo Ruby e Rails (2012)

Web Server Web Server Web Server

App Server App Server WS Server

Load Balancer

Database

Database

Cache Queue

Page 148: Aprendendo Ruby e Rails (2012)

NGINX NGINX NGINX

Unicorn Unicorn Thin

HA Proxy

PostgreSQL

PostgreSQL

Memcached Redis

Page 149: Aprendendo Ruby e Rails (2012)

Templates ERB, HAML, SASS

Autenticação HTTP Basic, HTTP Digest,Devise, Sorceror

Bancos de Dados MySQL, PostgreSQL, Oracle,MongoDB, Riak, Redis, Cassandra

ORMs ActiveRecord, DataMapper,MongoId, Sequel

Javascript Angular.js, jQuery,Ember.js, Backbone.js

Web Servers Apache 2, NGINX

Page 150: Aprendendo Ruby e Rails (2012)

Templates ERB, HAML, SASS

Autenticação HTTP Basic, HTTP Digest,Devise, Sorceror

Bancos de Dados MySQL, PostgreSQL, Oracle,MongoDB, Riak, Redis, Cassandra

ORMs ActiveRecord, DataMapper,MongoId, Sequel

Javascript Angular.js, jQuery,Ember.js, Backbone.js

Web Servers Apache 2, NGINX

Page 151: Aprendendo Ruby e Rails (2012)

Templates ERB, HAML, SASS

Autenticação HTTP Basic, HTTP Digest,Devise, Sorceror

Bancos de Dados MySQL, PostgreSQL, Oracle,MongoDB, Riak, Redis, Cassandra

ORMs ActiveRecord, DataMapper,MongoId, Sequel

Javascript Angular.js, jQuery,Ember.js, Backbone.js

Web Servers Apache 2, NGINX

Page 152: Aprendendo Ruby e Rails (2012)

Templates ERB, HAML, SASS

Autenticação HTTP Basic, HTTP Digest,Devise, Sorceror

Bancos de Dados MySQL, PostgreSQL, Oracle,MongoDB, Riak, Redis, Cassandra

ORMs ActiveRecord, DataMapper,MongoId, Sequel

Javascript Angular.js, jQuery,Ember.js, Backbone.js

Web Servers Apache 2, NGINX

Page 153: Aprendendo Ruby e Rails (2012)

Templates ERB, HAML, SASS

Autenticação HTTP Basic, HTTP Digest,Devise, Sorceror

Bancos de Dados MySQL, PostgreSQL, Oracle,MongoDB, Riak, Redis, Cassandra

ORMs ActiveRecord, DataMapper,MongoId, Sequel

Javascript Angular.js, jQuery,Ember.js, Backbone.js

Web Servers Apache 2, NGINX

Page 154: Aprendendo Ruby e Rails (2012)

Templates ERB, HAML, SASS

Autenticação HTTP Basic, HTTP Digest,Devise, Sorceror

Bancos de Dados MySQL, PostgreSQL, Oracle,MongoDB, Riak, Redis, Cassandra

ORMs ActiveRecord, DataMapper,MongoId, Sequel

Javascript Angular.js, jQuery,Ember.js, Backbone.js

Web Servers Apache 2, NGINX

Page 155: Aprendendo Ruby e Rails (2012)
Page 156: Aprendendo Ruby e Rails (2012)
Page 157: Aprendendo Ruby e Rails (2012)
Page 158: Aprendendo Ruby e Rails (2012)
Page 159: Aprendendo Ruby e Rails (2012)
Page 160: Aprendendo Ruby e Rails (2012)
Page 161: Aprendendo Ruby e Rails (2012)

Request

Page 162: Aprendendo Ruby e Rails (2012)

Request

TarefaPesada

Page 163: Aprendendo Ruby e Rails (2012)

TarefaPesada

Request Fila (Queue)

Page 164: Aprendendo Ruby e Rails (2012)
Page 165: Aprendendo Ruby e Rails (2012)
Page 166: Aprendendo Ruby e Rails (2012)
Page 167: Aprendendo Ruby e Rails (2012)

Performance?

Page 168: Aprendendo Ruby e Rails (2012)
Page 169: Aprendendo Ruby e Rails (2012)

Existem mentiras,

mentiras malditas

e estatísticas.

Page 170: Aprendendo Ruby e Rails (2012)

Existem mentiras,

mentiras malditas

e estatísticas.

Page 171: Aprendendo Ruby e Rails (2012)

Existem mentiras,

mentiras malditas

e estatísticas.

Page 172: Aprendendo Ruby e Rails (2012)
Page 173: Aprendendo Ruby e Rails (2012)
Page 174: Aprendendo Ruby e Rails (2012)
Page 175: Aprendendo Ruby e Rails (2012)
Page 176: Aprendendo Ruby e Rails (2012)

22.95 seg!

Page 177: Aprendendo Ruby e Rails (2012)
Page 178: Aprendendo Ruby e Rails (2012)

2.9 seg

Page 179: Aprendendo Ruby e Rails (2012)
Page 180: Aprendendo Ruby e Rails (2012)

Otimização Prematura é a

Origem de Todo o Mal

Page 181: Aprendendo Ruby e Rails (2012)

Material

Page 182: Aprendendo Ruby e Rails (2012)
Page 183: Aprendendo Ruby e Rails (2012)
Page 184: Aprendendo Ruby e Rails (2012)
Page 185: Aprendendo Ruby e Rails (2012)
Page 186: Aprendendo Ruby e Rails (2012)
Page 187: Aprendendo Ruby e Rails (2012)
Page 188: Aprendendo Ruby e Rails (2012)
Page 189: Aprendendo Ruby e Rails (2012)

Comunidades

Page 190: Aprendendo Ruby e Rails (2012)
Page 191: Aprendendo Ruby e Rails (2012)
Page 192: Aprendendo Ruby e Rails (2012)
Page 193: Aprendendo Ruby e Rails (2012)
Page 194: Aprendendo Ruby e Rails (2012)
Page 195: Aprendendo Ruby e Rails (2012)

Perl

Page 196: Aprendendo Ruby e Rails (2012)
Page 197: Aprendendo Ruby e Rails (2012)

Python

Page 198: Aprendendo Ruby e Rails (2012)
Page 199: Aprendendo Ruby e Rails (2012)

PHP

Page 200: Aprendendo Ruby e Rails (2012)
Page 201: Aprendendo Ruby e Rails (2012)

Ruby

Page 202: Aprendendo Ruby e Rails (2012)
Page 203: Aprendendo Ruby e Rails (2012)
Page 204: Aprendendo Ruby e Rails (2012)

Boas Práticas

Page 205: Aprendendo Ruby e Rails (2012)
Page 206: Aprendendo Ruby e Rails (2012)
Page 207: Aprendendo Ruby e Rails (2012)

require 'spec_helper'describe Coupon do let(:coupon) { described_class.new }

describe "validations" do context "both expiration date and quantity" do it "invalidates the coupon" do coupon.expires_at = 2.days.from_now coupon.quantity = 2000 coupon.should_not be_valid end end end

describe "#consume!" do context "when quantity" do let(:coupon) { described_class.create(:quantity => 100) }

it "decreases the quantity" do coupon.consume! coupon.quantity.should eq(99) end end endend

Page 208: Aprendendo Ruby e Rails (2012)

require 'spec_helper'describe Coupon do let(:coupon) { described_class.new }

describe "validations" do context "both expiration date and quantity" do it "invalidates the coupon" do coupon.expires_at = 2.days.from_now coupon.quantity = 2000 coupon.should_not be_valid end end end

describe "#consume!" do context "when quantity" do let(:coupon) { described_class.create(:quantity => 100) }

it "decreases the quantity" do coupon.consume! coupon.quantity.should eq(99) end end endend

Page 209: Aprendendo Ruby e Rails (2012)

require 'spec_helper'describe Coupon do let(:coupon) { described_class.new }

describe "validations" do context "both expiration date and quantity" do it "invalidates the coupon" do coupon.expires_at = 2.days.from_now coupon.quantity = 2000 coupon.should_not be_valid end end end

describe "#consume!" do context "when quantity" do let(:coupon) { described_class.create(:quantity => 100) }

it "decreases the quantity" do coupon.consume! coupon.quantity.should eq(99) end end endend

Page 210: Aprendendo Ruby e Rails (2012)

> rspec spec/models/coupon_spec.rb

Coupon validations only expiration date validates the coupon only quantity validates the coupon both expiration date and quantity invalidates the coupon only percentage discount validates the coupon only value discount validates the coupon both value and percentage invalidates the coupon #consume! when quantity decreases the quantity when expiration date does nothing...

Finished in 0.28123 seconds14 examples, 0 failures

Page 211: Aprendendo Ruby e Rails (2012)
Page 212: Aprendendo Ruby e Rails (2012)
Page 213: Aprendendo Ruby e Rails (2012)
Page 214: Aprendendo Ruby e Rails (2012)
Page 215: Aprendendo Ruby e Rails (2012)

Não é mais demorado?

Page 216: Aprendendo Ruby e Rails (2012)

“Cowboy” Pro!ssional

Produtividade

Page 217: Aprendendo Ruby e Rails (2012)

1 2 3 4 5 6 7 80

18

35

53

70

Prod

utiv

idad

e

Tempo

“Cowboy” Pro!ssional

Produtividade

Page 218: Aprendendo Ruby e Rails (2012)

1 2 3 4 5 6 7 80

18

35

53

70

Prod

utiv

idad

e

Tempo

“Cowboy” Pro!ssional

Produtividade

Page 219: Aprendendo Ruby e Rails (2012)

1 2 3 4 5 6 7 80

18

35

53

70

Prod

utiv

idad

e

Tempo

“Cowboy” Pro!ssional

Produtividade

Page 220: Aprendendo Ruby e Rails (2012)

1 2 3 4 5 6 7 80

18

35

53

70

Prod

utiv

idad

e

Tempo

“Cowboy” Pro!ssional

Produtividade

Page 221: Aprendendo Ruby e Rails (2012)

1 2 3 4 5 6 7 80

18

35

53

70

Prod

utiv

idad

e

Tempo

“Cowboy” Pro!ssional

Produtividade

Page 222: Aprendendo Ruby e Rails (2012)

1 2 3 4 5 6 7 80

18

35

53

70

Prod

utiv

idad

e

Tempo

“Cowboy” Pro!ssional

Produtividade

Page 223: Aprendendo Ruby e Rails (2012)

1 2 3 4 5 6 7 80

18

35

53

70

Prod

utiv

idad

e

Tempo

“Cowboy” Pro!ssional

Produtividade

Page 224: Aprendendo Ruby e Rails (2012)

1 2 3 4 5 6 7 80

18

35

53

70

Prod

utiv

idad

e

Tempo

“Cowboy” Pro!ssional

Produtividade

Page 225: Aprendendo Ruby e Rails (2012)

1 2 3 4 5 6 7 80

18

35

53

70

Prod

utiv

idad

e

Tempo

“Cowboy” Pro!ssional

Produtividade

Page 226: Aprendendo Ruby e Rails (2012)
Page 227: Aprendendo Ruby e Rails (2012)

Mais Produtivo

“Melhor”

Anti-legado

Page 228: Aprendendo Ruby e Rails (2012)

Robert C. Martin

Page 229: Aprendendo Ruby e Rails (2012)

“Uncle Bob”

Page 230: Aprendendo Ruby e Rails (2012)
Page 231: Aprendendo Ruby e Rails (2012)
Page 232: Aprendendo Ruby e Rails (2012)
Page 233: Aprendendo Ruby e Rails (2012)

LEMBRE-SE:Poderíamos contratar um Macaco Treinado

para fazer seu Trabalho!

Page 234: Aprendendo Ruby e Rails (2012)
Page 235: Aprendendo Ruby e Rails (2012)
Page 236: Aprendendo Ruby e Rails (2012)

Empreendedorismo

Código e “Forma”

Ciclo de Vida de Projetos

Comunidade Open Source

Page 237: Aprendendo Ruby e Rails (2012)

Empreendedorismo

Código e “Forma”

Ciclo de Vida de Projetos

Comunidade Open Source

Page 238: Aprendendo Ruby e Rails (2012)

Empreendedorismo

Código e “Forma”

Ciclo de Vida de Projetos

Comunidade Open Source

Page 239: Aprendendo Ruby e Rails (2012)

Empreendedorismo

Código e “Forma”

Ciclo de Vida de Projetos

Comunidade Open Source

Page 241: Aprendendo Ruby e Rails (2012)

Recommended