semac 2011 - apresentando ruby e ruby on rails
DESCRIPTION
Apresentação sobre Ruby e Ruby on Rails para o SEMAC da UNESP de São José do Rio Preto.TRANSCRIPT
![Page 1: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/1.jpg)
Apresentando Rubye Ruby on Rails
a apresentação já vai começar ...
![Page 2: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/2.jpg)
Apresentando Rubye Ruby on Rails
![Page 3: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/3.jpg)
Fabio Akitawww.akitaonrails.com
@akitaonrails
![Page 4: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/4.jpg)
Fabio Akitawww.akitaonrails.com
@akitaonrails
1990
![Page 5: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/5.jpg)
![Page 6: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/6.jpg)
![Page 7: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/7.jpg)
![Page 8: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/8.jpg)
![Page 9: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/9.jpg)
![Page 10: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/10.jpg)
![Page 11: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/11.jpg)
![Page 12: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/12.jpg)
![Page 13: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/13.jpg)
![Page 14: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/14.jpg)
![Page 15: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/15.jpg)
Ruby(linguagem)
1994
Ruby on Rails(framework web)
2004
![Page 16: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/16.jpg)
Ruby1.8.7
Ruby 1.9.2Ruby1.9.3-dev
Ruby on Rails2.3.11
Ruby on Rails 3.0.7Ruby on Rails3.1-RC1
![Page 17: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/17.jpg)
Ruby1.8.7
Ruby 1.9.2Ruby1.9.3-dev
Ruby on Rails2.3.11
Ruby on Rails 3.0.7Ruby on Rails3.1-RC1
![Page 18: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/18.jpg)
Ruby1.8.7
Ruby 1.9.2Ruby1.9.3-dev
Ruby on Rails2.3.11
Ruby on Rails 3.0.7Ruby on Rails3.1-RC1
![Page 19: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/19.jpg)
Orientação a Objetos
![Page 20: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/20.jpg)
![Page 21: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/21.jpg)
![Page 22: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/22.jpg)
![Page 23: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/23.jpg)
UMLDiagrama de Classes
![Page 24: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/24.jpg)
UMLDiagrama de Classes
!?
![Page 25: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/25.jpg)
UMLDiagrama de Classes
!?
POO?
![Page 26: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/26.jpg)
UMLDiagrama de Classes
!?
POC!
![Page 27: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/27.jpg)
Alan Kay
“A melhor maneirade prever o futuro
é inventá-lo”
![Page 28: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/28.jpg)
Alan Kay
“Eu inventei o termoOrientação a Objetos
e posso dizer queeu não tinha
C++ em mente”
![Page 29: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/29.jpg)
Alan Kay
“Eu inventei o termoOrientação a Objetos
e posso dizer queeu não tinha
C++ em mente”
![Page 30: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/30.jpg)
![Page 31: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/31.jpg)
![Page 32: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/32.jpg)
Hello World
![Page 33: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/33.jpg)
Hello World
![Page 34: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/34.jpg)
#include <stdio.h>
int main(){ printf("Hello world\n"); return 0;}
![Page 35: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/35.jpg)
class HelloWorldApp { public static void main(String[] args) { System.out.println("Hello World!"); }}
![Page 36: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/36.jpg)
Transcript show: 'Hello, world!'.
![Page 37: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/37.jpg)
puts 'Hello World'
![Page 38: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/38.jpg)
Procedures??
![Page 39: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/39.jpg)
Procedures??
![Page 40: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/40.jpg)
puts 'Hello World'=> Hello World
![Page 41: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/41.jpg)
puts 'Hello World'=> Hello World
Kernel.puts 'Hello World'=> Hello World
![Page 42: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/42.jpg)
puts 'Hello World'=> Hello World
Kernel.puts 'Hello World'=> Hello World
puts self.class
![Page 43: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/43.jpg)
puts 'Hello World'=> Hello World
Kernel.puts 'Hello World'=> Hello World
puts self.classthis
![Page 44: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/44.jpg)
puts 'Hello World'=> Hello World
Kernel.puts 'Hello World'=> Hello World
puts self.class => Object
this
![Page 45: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/45.jpg)
puts 'Hello World'=> Hello World
Kernel.puts 'Hello World'=> Hello World
puts self.class => Object
Object.ancestors => [Object, Kernel, BasicObject]
this
![Page 46: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/46.jpg)
puts 'Hello World'=> Hello World
Kernel.puts 'Hello World'=> Hello World
puts self.class => Object
Object.ancestors => [Object, Kernel, BasicObject]
this
![Page 47: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/47.jpg)
"teste".class => String
![Page 48: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/48.jpg)
"teste".class => String
1.class
![Page 49: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/49.jpg)
"teste".class => String
1.class => Fixnum
![Page 50: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/50.jpg)
"teste".class => String
1.class => Fixnum
true.class => TrueClass
![Page 51: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/51.jpg)
"teste".class => String
1.class => Fixnum
true.class => TrueClass
nil
![Page 52: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/52.jpg)
"teste".class => String
1.class => Fixnum
true.class => TrueClass
nil .class => NilClass
![Page 53: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/53.jpg)
"teste".class => String
1.class => Fixnum
true.class => TrueClass
nil .class => NilClass
NullPointerException!?
![Page 54: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/54.jpg)
"teste".class => String
1.class => Fixnum
true.class => TrueClass
nil .class => NilClass
![Page 55: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/55.jpg)
1 + 2
![Page 56: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/56.jpg)
1 + 2
1.+(2)
![Page 57: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/57.jpg)
def hello(name) return "Hello, " + nameend
puts hello("Fabio") => "Hello, Fabio"
![Page 58: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/58.jpg)
def hello(name) return "Hello, " + nameend
puts hello "Fabio" => "Hello, Fabio"
![Page 59: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/59.jpg)
def hello(name) return "Hello, " + nameend
puts hello "Fabio" => "Hello, Fabio"
ParêntesesOpcionais
![Page 60: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/60.jpg)
def hello(name) "Hello, " + nameend
puts hello "Fabio" => "Hello, Fabio"
![Page 61: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/61.jpg)
def hello(name) "Hello, " + nameend
puts hello "Fabio" => "Hello, Fabio" return
automático
![Page 62: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/62.jpg)
def hello(name) "Hello, #{name}"end
puts hello "Fabio" => "Hello, Fabio"
![Page 63: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/63.jpg)
def hello(name) "Hello, #{name}"end
puts hello "Fabio" => "Hello, Fabio" Interpolação
![Page 64: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/64.jpg)
class String def hello(name) "#{self}, #{name}" endend
![Page 65: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/65.jpg)
class String def hello(name) "#{self}, #{name}" endend
"Hello".hello "Fabio" => "Hello, Fabio"
![Page 66: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/66.jpg)
class String def hello(name) "#{self}, #{name}" endend
"Hello".hello "Fabio" => "Hello, Fabio"
ClassesAbertas!
![Page 67: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/67.jpg)
module Legal def bu! "Buuu!" endend
class String include Legalend
class Fixnum include Legalend
"foo".bu! => "Buuu!" 10.bu! => "Buuu!"
![Page 68: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/68.jpg)
module Legal def bu! "Buuu!" endend
class String include Legalend
class Fixnum include Legalend
"foo".bu! => "Buuu!" 10.bu! => "Buuu!"
![Page 69: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/69.jpg)
ModuleMixin
module Legal def bu! "Buuu!" endend
class String include Legalend
class Fixnum include Legalend
"foo".bu! => "Buuu!" 10.bu! => "Buuu!"
![Page 70: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/70.jpg)
ModuleMixin
module Legal def bu! "Buuu!" endend
class String include Legalend
class Fixnum include Legalend
"foo".bu! => "Buuu!" 10.bu! => "Buuu!"
![Page 71: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/71.jpg)
ModuleMixin
module Legal def bu! "Buuu!" endend
class String include Legalend
class Fixnum include Legalend
"foo".bu! => "Buuu!" 10.bu! => "Buuu!"
![Page 72: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/72.jpg)
require 'rubygems'require 'active_support'
Time.now + 1.day => 2011-05-18 11:44:20 -0300
Time.now + 1.week => 2011-05-24 11:44:24 -0300
(1.gigabyte - 100.megabytes) / 1.megabyte => 924
![Page 73: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/73.jpg)
require 'rubygems'require 'active_support'
Time.now + 1.day => 2011-05-18 11:44:20 -0300
Time.now + 1.week => 2011-05-24 11:44:24 -0300
(1.gigabyte - 100.megabytes) / 1.megabyte => 924
![Page 74: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/74.jpg)
require 'rubygems'require 'active_support'
Time.now + 1.day => 2011-05-18 11:44:20 -0300
Time.now + 1.week => 2011-05-24 11:44:24 -0300
(1.gigabyte - 100.megabytes) / 1.megabyte => 924
![Page 75: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/75.jpg)
require 'rubygems'require 'active_support'
Time.now + 1.day => 2011-05-18 11:44:20 -0300
Time.now + 1.week => 2011-05-24 11:44:24 -0300
(1.gigabyte - 100.megabytes) / 1.megabyte => 924
![Page 76: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/76.jpg)
list = [1,2,3,4,5]soma = 0
for i in list soma += iend
puts soma => 15
![Page 77: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/77.jpg)
list = [1,2,3,4,5]soma = 0
for i in list soma += iend
puts soma => 15
![Page 78: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/78.jpg)
list = [1,2,3,4,5]soma = 0
for i in list soma += iend
puts soma => 15
![Page 79: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/79.jpg)
list = [1,2,3,4,5]
soma = list.inject(0) { |total, i| total += i }
puts soma => 15
![Page 80: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/80.jpg)
list = [1,2,3,4,5]
soma = list.inject(0) { |total, i| total += i }
puts soma => 15
![Page 81: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/81.jpg)
list = [1,2,3,4,5]
soma = list.inject(0) { |total, i| total += i }
puts soma => 15
![Page 82: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/82.jpg)
list = [1,2,3,4,5]
soma = list.inject(0) { |total, i| total += i }
puts soma => 15
![Page 83: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/83.jpg)
list = [1,2,3,4,5]
soma = list.inject(0) { |total, i| total += i }
puts soma => 15
![Page 84: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/84.jpg)
list = [1,2,3,4,5]
soma = list.inject(0) do |total, i| total += iend
puts soma => 15
![Page 85: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/85.jpg)
list = [1,2,3,4,5]
soma = list.inject(0) do |total, i| total += iend
puts soma => 15
Anonymous Inner Class?
![Page 86: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/86.jpg)
list = [1,2,3,4,5]
soma = list.inject(0) do |total, i| total += iend
puts soma => 15
![Page 87: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/87.jpg)
list = [1,2,3,4,5]
soma = list.inject(0) do |total, i| total += iend
puts soma => 15 CLOSURE!
![Page 88: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/88.jpg)
class Foo def method_missing(method) print "#{method} called" endend
Foo.new.bar => "bar called" Foo.new.send(:bar) => "bar called"
![Page 89: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/89.jpg)
class Foo def method_missing(method) print "#{method} called" endend
Foo.new.bar => "bar called" Foo.new.send(:bar) => "bar called"
![Page 90: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/90.jpg)
class Foo def method_missing(method) print "#{method} called" endend
Foo.new.bar => "bar called" Foo.new.send(:bar) => "bar called"
Messages!
![Page 91: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/91.jpg)
![Page 92: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/92.jpg)
<?xml version="1.1" encoding="US-ASCII"?><Hello>World!</Hello><date> <year>2006</year> <month>01</month> <day>01</day></date>
![Page 93: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/93.jpg)
<?xml version="1.1" encoding="US-ASCII"?><Hello>World!</Hello><date> <year>2006</year> <month>01</month> <day>01</day></date>
require 'builder'xml = Builder::XmlMarkup.new
xml.instruct! :xml
xml.Hello "World!"xml.date do xml.year "2006" xml.month "01" xml.day "01"end
![Page 94: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/94.jpg)
<?xml version="1.1" encoding="US-ASCII"?><Hello>World!</Hello><date> <year>2006</year> <month>01</month> <day>01</day></date>
require 'builder'xml = Builder::XmlMarkup.new
xml.instruct! :xml
xml.Hello "World!"xml.date do xml.year "2006" xml.month "01" xml.day "01"end
![Page 95: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/95.jpg)
<?xml version="1.1" encoding="US-ASCII"?><Hello>World!</Hello><date> <year>2006</year> <month>01</month> <day>01</day></date>
require 'builder'xml = Builder::XmlMarkup.new
xml.instruct! :xml
xml.Hello "World!"xml.date do xml.year "2006" xml.month "01" xml.day "01"end
![Page 96: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/96.jpg)
<?xml version="1.1" encoding="US-ASCII"?><Hello>World!</Hello><date> <year>2006</year> <month>01</month> <day>01</day></date>
require 'builder'xml = Builder::XmlMarkup.new
xml.instruct! :xml
xml.Hello "World!"xml.date do xml.year "2006" xml.month "01" xml.day "01"end
![Page 97: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/97.jpg)
<?xml version="1.1" encoding="US-ASCII"?><Hello>World!</Hello><date> <year>2006</year> <month>01</month> <day>01</day></date>
require 'builder'xml = Builder::XmlMarkup.new
xml.instruct! :xml
xml.Hello "World!"xml.date do xml.year "2006" xml.month "01" xml.day "01"end
![Page 98: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/98.jpg)
![Page 99: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/99.jpg)
require 'rubygems'require 'mechanize'
a = Mechanize.new do |agent| agent.user_agent_alias = 'Mac Safari'end
a.get('http://google.com/') do |page| search_result = page.form_with(:name => 'f') do |search| search.q = 'Hello world' end.submit
search_result.links.each do |link| puts link.text endend
![Page 100: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/100.jpg)
require 'rubygems'require 'mechanize'
a = Mechanize.new do |agent| agent.user_agent_alias = 'Mac Safari'end
a.get('http://google.com/') do |page| search_result = page.form_with(:name => 'f') do |search| search.q = 'Hello world' end.submit
search_result.links.each do |link| puts link.text endend
![Page 101: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/101.jpg)
require 'rubygems'require 'mechanize'
a = Mechanize.new do |agent| agent.user_agent_alias = 'Mac Safari'end
a.get('http://google.com/') do |page| search_result = page.form_with(:name => 'f') do |search| search.q = 'Hello world' end.submit
search_result.links.each do |link| puts link.text endend
![Page 102: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/102.jpg)
require 'rubygems'require 'mechanize'
a = Mechanize.new do |agent| agent.user_agent_alias = 'Mac Safari'end
a.get('http://google.com/') do |page| search_result = page.form_with(:name => 'f') do |search| search.q = 'Hello world' end.submit
search_result.links.each do |link| puts link.text endend
![Page 103: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/103.jpg)
![Page 104: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/104.jpg)
class Twitter include HTTParty base_uri 'twitter.com' basic_auth 'username', 'password'end
Twitter.post('/statuses/update.json', :query => { :status => "It's an HTTParty and everyone is invited!" })
![Page 105: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/105.jpg)
class Twitter include HTTParty base_uri 'twitter.com' basic_auth 'username', 'password'end
Twitter.post('/statuses/update.json', :query => { :status => "It's an HTTParty and everyone is invited!" })
![Page 106: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/106.jpg)
![Page 107: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/107.jpg)
![Page 108: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/108.jpg)
![Page 109: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/109.jpg)
![Page 110: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/110.jpg)
![Page 111: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/111.jpg)
![Page 112: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/112.jpg)
![Page 113: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/113.jpg)
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 114: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/114.jpg)
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 115: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/115.jpg)
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 116: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/116.jpg)
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 117: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/117.jpg)
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 118: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/118.jpg)
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 119: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/119.jpg)
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 120: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/120.jpg)
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 121: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/121.jpg)
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 122: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/122.jpg)
![Page 123: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/123.jpg)
![Page 124: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/124.jpg)
$(':checkbox').map(function() { return this.id;}).get().join(',');
![Page 125: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/125.jpg)
![Page 126: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/126.jpg)
![Page 127: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/127.jpg)
em 2004 ...
![Page 128: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/128.jpg)
![Page 129: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/129.jpg)
![Page 130: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/130.jpg)
![Page 131: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/131.jpg)
gem install rails
rails new nome_do_projeto
![Page 132: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/132.jpg)
Web Server
Rack Middlewares
Routes
Controller
ModelView
Request
![Page 133: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/133.jpg)
Web Server
Rack Middlewares
Routes
Controller
ModelView
Request
![Page 134: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/134.jpg)
Web Server
Rack Middlewares
Routes
Controller
ModelView
Request
![Page 135: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/135.jpg)
Web Server
Rack Middlewares
Routes
Controller
ModelView
Request
![Page 136: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/136.jpg)
Web Server
Rack Middlewares
Routes
Controller
ModelView
Request
![Page 137: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/137.jpg)
Web Server
Rack Middlewares
Routes
Controller
ModelView
Request
![Page 138: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/138.jpg)
Web Server
Rack Middlewares
Routes
Controller
ModelView
Request
![Page 139: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/139.jpg)
Web Server
Rack Middlewares
Routes
Controller
ModelView
Request
![Page 140: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/140.jpg)
Web Server
Rack Middlewares
Routes
Controller
ModelView
Request
![Page 141: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/141.jpg)
Web Server
Rack Middlewares
Routes
Controller
ModelView
Request
![Page 142: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/142.jpg)
Web Server
Rack Middlewares
Routes
Controller
ModelView
Response Request
![Page 143: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/143.jpg)
![Page 144: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/144.jpg)
![Page 145: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/145.jpg)
~30 mil gems
~15 GB
![Page 146: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/146.jpg)
![Page 147: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/147.jpg)
bundle install
![Page 148: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/148.jpg)
RubyGem “Jar”
Rake Ant, Make
Bundler* Maven
* não baixa toda a internet
![Page 149: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/149.jpg)
> bundle list
Gems included by the bundle: * abstract (1.0.0) * actionmailer (3.0.7) * actionpack (3.0.7) * activemodel (3.0.7) * activerecord (3.0.7) * activeresource (3.0.7) * activesupport (3.0.7) * arel (2.0.9) * builder (2.1.2) * bundler (1.0.13) * erubis (2.6.6) * i18n (0.5.0)
* mail (2.2.19) * mime-types (1.16) * polyglot (0.3.1) * rack (1.2.2) * rack-mount (0.6.14) * rack-test (0.5.7) * rails (3.0.7) * railties (3.0.7) * rake (0.8.7) * sqlite3 (1.3.3) * thor (0.14.6) * treetop (1.4.9) * tzinfo (0.3.27)
![Page 150: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/150.jpg)
> bundle list
Gems included by the bundle: * abstract (1.0.0) * actionmailer (3.0.7) * actionpack (3.0.7) * activemodel (3.0.7) * activerecord (3.0.7) * activeresource (3.0.7) * activesupport (3.0.7) * arel (2.0.9) * builder (2.1.2) * bundler (1.0.13) * erubis (2.6.6) * i18n (0.5.0)
* mail (2.2.19) * mime-types (1.16) * polyglot (0.3.1) * rack (1.2.2) * rack-mount (0.6.14) * rack-test (0.5.7) * rails (3.0.7) * railties (3.0.7) * rake (0.8.7) * sqlite3 (1.3.3) * thor (0.14.6) * treetop (1.4.9) * tzinfo (0.3.27)
![Page 151: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/151.jpg)
> rake -T
rake about rake db:create rake db:drop rake db:fixtures:load rake db:migrate rake db:migrate:status rake db:rollback rake db:schema:dump rake db:schema:load rake db:seed rake db:setup rake db:structure:dump rake db:versionrake doc:app
rake log:clear rake middleware rake notes rake notes:custom rake rails:template rake rails:update rake routes rake secret rake stats rake test rake test:recent rake test:uncommitted rake time:zones:all rake tmp:clear rake tmp:create
![Page 152: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/152.jpg)
> rails generateUsage: rails generate GENERATOR [args] [options]
General options: -h, [--help] # Print generator's options and usage -p, [--pretend] # Run but do not make any changes -f, [--force] # Overwrite files that already exist -s, [--skip] # Skip files that already exist -q, [--quiet] # Suppress status output
Please choose a generator below.
Rails: controller generator helper integration_test mailer migration model
observer performance_test plugin resource scaffold scaffold_controller session_migration stylesheets
![Page 153: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/153.jpg)
> rake middleware
use ActionDispatch::Staticuse Rack::Lockuse ActiveSupport::Cache::Strategy::LocalCacheuse Rack::Runtimeuse Rails::Rack::Loggeruse ActionDispatch::ShowExceptionsuse ActionDispatch::RemoteIpuse Rack::Sendfileuse ActionDispatch::Callbacksuse ActiveRecord::ConnectionAdapters::ConnectionManagementuse ActiveRecord::QueryCacheuse ActionDispatch::Cookiesuse ActionDispatch::Session::CookieStoreuse ActionDispatch::Flashuse ActionDispatch::ParamsParseruse Rack::MethodOverrideuse ActionDispatch::Headuse ActionDispatch::BestStandardsSupportrun Demo::Application.routes
Rack Middlewares
![Page 154: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/154.jpg)
Web Server
Rack Middlewares
Routes
Controller
ModelView
Response Request
![Page 155: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/155.jpg)
Web Server
Rack Middlewares
Routes
Controller
ModelView
Response Request
![Page 156: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/156.jpg)
Web Server
Rack Middlewares
Routes
Controller
ModelView
Response Request
Application Server Rack:
Mongrel,Thin,
Passenger,Unicorn
![Page 157: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/157.jpg)
Web Server
Rack Middlewares
Routes
Controller
ModelView
Response Request
Web Server:NginX
Apache
Application Server Rack:
Mongrel,Thin,
Passenger,Unicorn
![Page 158: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/158.jpg)
![Page 159: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/159.jpg)
![Page 160: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/160.jpg)
Opinionated Software™
![Page 161: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/161.jpg)
![Page 162: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/162.jpg)
![Page 163: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/163.jpg)
... e chegamos em 2011!
![Page 164: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/164.jpg)
Tom MorniniCTO
![Page 165: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/165.jpg)
PatrocinadoresRubiniusJRuby
RailsInstallerRVM
BundlerJQuery
RubySpec
![Page 166: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/166.jpg)
![Page 167: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/167.jpg)
+200 mil sites
![Page 168: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/168.jpg)
![Page 169: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/169.jpg)
![Page 170: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/170.jpg)
~1 milhãode desenvolvedores
4M até 2013 (Gartner)
![Page 171: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/171.jpg)
![Page 172: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/172.jpg)
![Page 173: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/173.jpg)
![Page 174: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/174.jpg)
Taxa/hora
![Page 175: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/175.jpg)
Taxa/hora
![Page 176: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/176.jpg)
Taxa/hora
![Page 177: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/177.jpg)
Taxa/hora
![Page 178: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/178.jpg)
Taxa/hora
![Page 179: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/179.jpg)
Taxa/hora
![Page 180: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/180.jpg)
Commodity!
![Page 181: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/181.jpg)
A maioria trabalha com tecnologia “X”,
portanto também vou
![Page 182: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/182.jpg)
![Page 183: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/183.jpg)
“Commodity”
![Page 184: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/184.jpg)
Um commodity é um bem ou serviço para o qual há demanda, mas que é ofertado sem diferenciação qualitativa notável por todo o mercado.
Commoditização acontece à medida que o mercado de bens e serviços perde diferenciação por toda sua base de fornecimento - normalmente porque todos estão fazendo a mesma coisa.
Wikipedia
![Page 185: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/185.jpg)
Um commodity é um bem ou serviço para o qual há demanda, mas que é ofertado sem diferenciação qualitativa notável por todo o mercado.
Commoditização acontece à medida que o mercado de bens e serviços perde diferenciação por toda sua base de fornecimento - normalmente porque todos estão fazendo a mesma coisa.
Wikipedia
![Page 186: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/186.jpg)
Um commodity é um bem ou serviço para o qual há demanda, mas que é ofertado sem diferenciação qualitativa notável por todo o mercado.
Commoditização acontece à medida que o mercado de bens e serviços perde diferenciação por toda sua base de fornecimento - normalmente porque todos estão fazendo a mesma coisa.
Wikipedia
![Page 187: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/187.jpg)
![Page 188: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/188.jpg)
2x
![Page 189: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/189.jpg)
![Page 190: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/190.jpg)
100x
ZOMG!
![Page 191: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/191.jpg)
Jack of All Tradesmaster of none
![Page 192: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/192.jpg)
Renaissance ManPolymath
![Page 193: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/193.jpg)
![Page 194: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/194.jpg)
SchedulerFactory sf = new StdSchedulerFactory();Scheduler sched = sf.getScheduler();
job = new JobDetail("job2", "group1", SimpleJob.class);
trigger = new CronTrigger("trigger2", "group1", "job2", "group1", "15 0/2 * * * ?");
sched.addJob(job, true);
![Page 195: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/195.jpg)
SchedulerFactory sf = new StdSchedulerFactory();Scheduler sched = sf.getScheduler();
JobDetail job = newJob(SimpleJob.class) .withIdentity("job1", "group1") .build();
CronTrigger trigger = newTrigger() .withIdentity("trigger1", "group1") .withSchedule(cronSchedule("0/20 * * * * ?")) .build();
sched.scheduleJob(job, trigger);
![Page 196: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/196.jpg)
Domain Speci!c Language (DSL)
![Page 197: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/197.jpg)
describe Account do it "has a balance of zero when first created" do Account.new.balance.should eq(Money.new(0)) endend
![Page 198: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/198.jpg)
![Page 199: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/199.jpg)
![Page 200: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/200.jpg)
![Page 201: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/201.jpg)
![Page 202: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/202.jpg)
![Page 203: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/203.jpg)
![Page 204: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/204.jpg)
Perl
![Page 205: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/205.jpg)
![Page 206: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/206.jpg)
Python
![Page 207: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/207.jpg)
![Page 208: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/208.jpg)
PHP
![Page 209: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/209.jpg)
![Page 210: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/210.jpg)
Ruby
![Page 211: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/211.jpg)
OMG!
![Page 212: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/212.jpg)
![Page 213: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/213.jpg)
Core Team
![Page 214: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/214.jpg)
Core Team
![Page 215: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/215.jpg)
Core Team
![Page 216: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/216.jpg)
Core Team
![Page 217: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/217.jpg)
Core Team
![Page 218: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/218.jpg)
Core Team
![Page 219: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/219.jpg)
Core Team
![Page 220: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/220.jpg)
Core Team
![Page 221: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/221.jpg)
Core Team
![Page 222: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/222.jpg)
Core Team
![Page 223: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/223.jpg)
![Page 224: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/224.jpg)
+30 mil gems
+15 GB
![Page 225: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/225.jpg)
• Mais Fácil de aprender?
• Mais Produtivo?
• Mais Qualidade?
![Page 226: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/226.jpg)
Depende do Desenvolvedor!
![Page 227: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/227.jpg)
![Page 228: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/228.jpg)
![Page 229: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/229.jpg)
500 mercados44 países
![Page 230: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/230.jpg)
38.5M assinantes(EUA)
![Page 231: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/231.jpg)
![Page 232: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/232.jpg)
2 meses(tempo desenv. 50% menor)
![Page 233: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/233.jpg)
![Page 234: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/234.jpg)
![Page 235: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/235.jpg)
![Page 236: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/236.jpg)
![Page 237: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/237.jpg)
Variáveis/* CSS */
.content-navigation { border-color: #3bbfce; color: #2b9eab;}
.border { padding: 8px; margin: 8px; border-color: #3bbfce;}
$blue: #3bbfce;$margin: 16px;
.content-navigation { border-color: $blue; color: darken($blue, 9%);}
.border { padding: $margin / 2; margin: $margin / 2; border-color: $blue;}
![Page 238: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/238.jpg)
Nestingtable.hl { margin: 2em 0; td.ln { text-align: right; }}
li { font: { family: serif; weight: bold; size: 1.2em; }}
/* CSS */
table.hl { margin: 2em 0;}table.hl td.ln { text-align: right;}
li { font-family: serif; font-weight: bold; font-size: 1.2em;}
![Page 239: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/239.jpg)
Mixins@mixin table-base { th { text-align: center; font-weight: bold; } td, th {padding: 2px}}
@mixin left($dist) { float: left; margin-left: $dist;}
#data { @include left(10px); @include table-base;}
/* CSS */
#data { float: left; margin-left: 10px;}#data th { text-align: center; font-weight: bold;}#data td, #data th { padding: 2px;}
![Page 240: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/240.jpg)
Selector Inheritance.error { border: 1px #f00; background: #fdd;}.error.intrusion { font-size: 1.3em; font-weight: bold;}
.badError { @extend .error; border-width: 3px;}
/* CSS */
.error, .badError { border: 1px #f00; background: #fdd;}
.error.intrusion,
.badError.intrusion { font-size: 1.3em; font-weight: bold;}
.badError { border-width: 3px;}
![Page 241: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/241.jpg)
![Page 242: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/242.jpg)
class Animal constructor: (@name) ->
move: (meters) -> alert @name + " moved " + meters + "m."
class Snake extends Animal move: -> alert "Slithering..." super 5
class Horse extends Animal move: -> alert "Galloping..." super 45
sam = new Snake "Sammy the Python"tom = new Horse "Tommy the Palomino"
sam.move()tom.move()
var Animal, Horse, Snake, sam, tom;var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype; return child;};Animal = (function() { function Animal(name) { this.name = name; } Animal.prototype.move = function(meters) { return alert(this.name + " moved " + meters + "m."); }; return Animal;})();Snake = (function() { __extends(Snake, Animal); function Snake() { Snake.__super__.constructor.apply(this, arguments); } Snake.prototype.move = function() { alert("Slithering..."); return Snake.__super__.move.call(this, 5); }; return Snake;})();Horse = (function() { __extends(Horse, Animal); function Horse() { Horse.__super__.constructor.apply(this, arguments); } Horse.prototype.move = function() { alert("Galloping..."); return Horse.__super__.move.call(this, 45); }; return Horse;})();sam = new Snake("Sammy the Python");tom = new Horse("Tommy the Palomino");sam.move();tom.move();loadrun
![Page 243: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/243.jpg)
![Page 244: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/244.jpg)
![Page 245: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/245.jpg)
102
![Page 246: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/246.jpg)
Rails 3.1:Release Candidate
THIS WEEK!(may 2011)
![Page 247: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/247.jpg)
Material
![Page 248: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/248.jpg)
![Page 249: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/249.jpg)
![Page 250: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/250.jpg)
![Page 251: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/251.jpg)
![Page 252: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/252.jpg)
![Page 253: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/253.jpg)
![Page 254: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/254.jpg)
![Page 255: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/255.jpg)
![Page 256: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/256.jpg)
![Page 257: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/257.jpg)
![Page 258: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/258.jpg)
![Page 259: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/259.jpg)
![Page 260: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/260.jpg)
![Page 261: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/261.jpg)
RubyConfBrasil
3 e 4 de Novembro
![Page 262: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/262.jpg)
@pedroh96
Pedro Franceschi
![Page 263: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/263.jpg)
15 anos
@pedroh96
Pedro Franceschi
![Page 264: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/264.jpg)
9 anos
@pedroh96
Pedro Franceschi
![Page 265: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/265.jpg)
6 anos
@pedroh96
Pedro Franceschi
![Page 266: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/266.jpg)
@pedroh96
Pedro Franceschi
![Page 267: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/267.jpg)
![Page 268: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/268.jpg)
![Page 269: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/269.jpg)
![Page 270: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/270.jpg)
![Page 271: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/271.jpg)
Obrigado!www.akitaonrails.com
www.gonow.com.br
u.akita.ws/semac2011
![Page 272: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/272.jpg)
One more thing ...
![Page 273: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/273.jpg)
![Page 274: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/274.jpg)
Sorteio de Bolsas de Estudo Online (3)
![Page 275: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/275.jpg)
Curso de Ruby on Rails 3 do básico ao avançado com o Daniel V. Lopes
(http://egenial.com.br/cursorails)
Curso de Node.js com Emerson Leite da Globo.com
(http://egenial.com.br/nodejs)
Curso de HTML5+CSS3 com o Cleiton Francisco da Jus Navegandi
(http://egenial.pro/pt/html5)
![Page 276: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/276.jpg)
Curso de Ruby on Rails 3 do básico ao avançado com o Daniel V. Lopes
(http://egenial.com.br/cursorails)
Curso de Node.js com Emerson Leite da Globo.com
(http://egenial.com.br/nodejs)
Curso de HTML5+CSS3 com o Cleiton Francisco da Jus Navegandi
(http://egenial.pro/pt/html5)
![Page 277: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/277.jpg)
Curso de Ruby on Rails 3 do básico ao avançado com o Daniel V. Lopes
(http://egenial.com.br/cursorails)
Curso de Node.js com Emerson Leite da Globo.com
(http://egenial.com.br/nodejs)
Curso de HTML5+CSS3 com o Cleiton Francisco da Jus Navegandi
(http://egenial.pro/pt/html5)
![Page 278: SEMAC 2011 - Apresentando Ruby e Ruby on Rails](https://reader034.vdocuments.site/reader034/viewer/2022042714/54b6c9584a7959a91b8b4569/html5/thumbnails/278.jpg)
Obrigado!www.akitaonrails.com
www.gonow.com.br
u.akita.ws/semac2011