SlideShare uma empresa Scribd logo
1 de 90
Baixar para ler offline
2009, ano do Ruby
 on Rails no Brasil
Cauê Guerra
caue.guerra@caelum.com.br

@caueguerra




 OndeTrabalhar.com
Ruby
Yukihiro Matsumoto (Matz)

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


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


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


Tipagem dinâmica       @nome = “Cauê Guerra”
Características


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


Tipagem dinâmica       @nome = “Cauê Guerra”


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


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


Tipagem dinâmica        @nome = “Cauê Guerra”


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


Programação funcional
Exemplo
Java

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


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

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


val calculador = new CalculadorDeMDC
println(calculador.calcula(28, 7))
Ruby
            class CalculadorDeMDC
             def calcula(a, b)
               if b == 0
                 a
               else
                 calcula(b, a % b)
               end
             end
            end

calculador = CalculadorDeMDC.new
puts calculador.calcula(28, 7)
Um outro exemplo
Java


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



def paraMaiuscula(palavras)
 palavras.map { |palavra| palavra.upcase }
end
“Tornar as coisas
 simples, fáceis;
 e as complexas,
    possíveis”
     Filosofia Ruby
1995
Dave Thomas


   2001
http://www.ruby-lang.org
Thomas Enebo           2006




               JRuby


                 Ruby escrito
                100% em Java
WTF?!?
WTF?!?
http://rubyonrails.org/
Pilares
CoC
Convention over Configuration
DRY
Don’t Repeat Yourself
MVC
Browser
Browser



ApplicationController
Browser



ApplicationController


     Controller
Browser



ApplicationController


     Controller         Model
Browser



ApplicationController


     Controller         Model



                         DB
Browser



ApplicationController


     Controller         Model



                         DB
Browser



ApplicationController


     Controller         Model



                         DB
Browser



       ApplicationController


            Controller         Model



View                            DB
Aplicação
Configurações
Schema evolution




Testes
Controller




Model




View
Testes
Testes
 Test All The Fucking Time!
TDD
  Test Driven Development




BDD
Behavior Driven Development
RSpec


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

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

 Scenario: Listing when there is no jobs
  Given there is no jobs
  When I go to "java"
  Then I should see "Desculpe, não existem vagas disponíveis."
  And the "OndeTrabalhar.com" field should contain "java"
Rails não escala!
Hoje o Redeparede.com
serve 7,5 milhões de
acessos por mês
usando Ruby on Rails.
Rails escala, depende
de você!
“Basecamp is now handling
 more than 50 million Rails
 requests per week. We're
 peaking out at around 200
     req/sec. Damn!”


   “Basecamp's average
  response time is 90ms
 and 87% of all requests
finish in less than 200ms.”
Não conheço ninguém que use Rails
Rails 3 =   +
Yehuda Katz
José Valim
Regis Pires




IFPI - Piauí
2
3
Formação Rails




RR-71: Desenvolvimento Ágil para     RR-75: Ruby e Rails avançados:
  Web 2.0 com Ruby on Rails        lidando com problemas do dia a dia
150



113                      113




 75
                  72



 38

                        2009
      0          2008
           10
          2007
E daí?
http://ondetrabalhar.com/ruby+ou+rails
http://slideshare.net/caueguerra

Mais conteúdo relacionado

Mais procurados

Yet Another Ruby Framework - Como o Rails funciona por dentro
Yet Another Ruby Framework - Como o Rails funciona por dentroYet Another Ruby Framework - Como o Rails funciona por dentro
Yet Another Ruby Framework - Como o Rails funciona por dentroCarlos Brando
 
Ruby para programadores java
Ruby para programadores javaRuby para programadores java
Ruby para programadores javaRodrigo Urubatan
 
Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)Daniel Lopes
 
Filosofia Ruby e Rails (UFOP e Inforuso 2010)
Filosofia Ruby e Rails (UFOP e Inforuso 2010)Filosofia Ruby e Rails (UFOP e Inforuso 2010)
Filosofia Ruby e Rails (UFOP e Inforuso 2010)Daniel Lopes
 
Iniciando com javaScript 2017
Iniciando com javaScript 2017Iniciando com javaScript 2017
Iniciando com javaScript 2017Romualdo Andre
 
UPF Senainfo - Passo Fundo-RS
UPF Senainfo - Passo Fundo-RSUPF Senainfo - Passo Fundo-RS
UPF Senainfo - Passo Fundo-RSFabio Akita
 

Mais procurados (7)

Yet Another Ruby Framework - Como o Rails funciona por dentro
Yet Another Ruby Framework - Como o Rails funciona por dentroYet Another Ruby Framework - Como o Rails funciona por dentro
Yet Another Ruby Framework - Como o Rails funciona por dentro
 
Ruby para programadores java
Ruby para programadores javaRuby para programadores java
Ruby para programadores java
 
Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)
 
Ruby
RubyRuby
Ruby
 
Filosofia Ruby e Rails (UFOP e Inforuso 2010)
Filosofia Ruby e Rails (UFOP e Inforuso 2010)Filosofia Ruby e Rails (UFOP e Inforuso 2010)
Filosofia Ruby e Rails (UFOP e Inforuso 2010)
 
Iniciando com javaScript 2017
Iniciando com javaScript 2017Iniciando com javaScript 2017
Iniciando com javaScript 2017
 
UPF Senainfo - Passo Fundo-RS
UPF Senainfo - Passo Fundo-RSUPF Senainfo - Passo Fundo-RS
UPF Senainfo - Passo Fundo-RS
 

Destaque

Managed services smb nation june 2011
Managed services   smb nation june 2011Managed services   smb nation june 2011
Managed services smb nation june 2011Alistair Forbes
 
KNSB verenigingsdag 2012 endnote
KNSB verenigingsdag 2012 endnoteKNSB verenigingsdag 2012 endnote
KNSB verenigingsdag 2012 endnoteMischa Coster
 
2009, o ano do Ruby on Rails no Brasil - CaelumDay 2009
2009, o ano do Ruby on Rails no Brasil - CaelumDay 20092009, o ano do Ruby on Rails no Brasil - CaelumDay 2009
2009, o ano do Ruby on Rails no Brasil - CaelumDay 2009Caue Guerra
 
Cross Platform Game Development with Rails
Cross Platform Game Development with RailsCross Platform Game Development with Rails
Cross Platform Game Development with RailsCaue Guerra
 
Model Horse Intro Slideshow
Model Horse Intro SlideshowModel Horse Intro Slideshow
Model Horse Intro Slideshowguest61f11
 

Destaque (8)

Managed services smb nation june 2011
Managed services   smb nation june 2011Managed services   smb nation june 2011
Managed services smb nation june 2011
 
KNSB verenigingsdag 2012 endnote
KNSB verenigingsdag 2012 endnoteKNSB verenigingsdag 2012 endnote
KNSB verenigingsdag 2012 endnote
 
Easyplrlove
EasyplrloveEasyplrlove
Easyplrlove
 
2009, o ano do Ruby on Rails no Brasil - CaelumDay 2009
2009, o ano do Ruby on Rails no Brasil - CaelumDay 20092009, o ano do Ruby on Rails no Brasil - CaelumDay 2009
2009, o ano do Ruby on Rails no Brasil - CaelumDay 2009
 
Cross Platform Game Development with Rails
Cross Platform Game Development with RailsCross Platform Game Development with Rails
Cross Platform Game Development with Rails
 
wrd&txt hacking
wrd&txt hackingwrd&txt hacking
wrd&txt hacking
 
2013 and gfi max
2013 and gfi max2013 and gfi max
2013 and gfi max
 
Model Horse Intro Slideshow
Model Horse Intro SlideshowModel Horse Intro Slideshow
Model Horse Intro Slideshow
 

Semelhante a Ruby Rails Brasil 2009

Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Railsismaelstahelin
 
Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)Joao Lucas Santana
 
ruby on rails e o mercado
ruby on rails e o mercadoruby on rails e o mercado
ruby on rails e o mercadoelliando dias
 
Workshop Ruby on Rails dia 2 ruby-pt
Workshop Ruby on Rails dia 2  ruby-ptWorkshop Ruby on Rails dia 2  ruby-pt
Workshop Ruby on Rails dia 2 ruby-ptPedro Sousa
 
Quick introduction to Ruby on Rails
Quick introduction to Ruby on RailsQuick introduction to Ruby on Rails
Quick introduction to Ruby on RailsWhitesmith
 
Minicurso Ruby on Rails - Wake Up Systems
Minicurso Ruby on Rails - Wake Up SystemsMinicurso Ruby on Rails - Wake Up Systems
Minicurso Ruby on Rails - Wake Up SystemsWakeUpSystems
 
Desenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsDesenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsLucas Caton
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAThiago Cifani
 
Introdução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em RailsIntrodução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em Railsoverduka
 
Ruby on Rails e o Mercado
Ruby on Rails e o MercadoRuby on Rails e o Mercado
Ruby on Rails e o MercadoJulio Monteiro
 
Introducao ao desenvolvimento web com Rails
Introducao ao desenvolvimento web com RailsIntroducao ao desenvolvimento web com Rails
Introducao ao desenvolvimento web com RailsKaton Agência Digital
 
Design Patterns on Rails
Design Patterns on RailsDesign Patterns on Rails
Design Patterns on Railstchandy
 
Workshop Ruby on Rails dia 1 ruby-pt
Workshop Ruby on Rails dia 1 ruby-ptWorkshop Ruby on Rails dia 1 ruby-pt
Workshop Ruby on Rails dia 1 ruby-ptPedro Sousa
 

Semelhante a Ruby Rails Brasil 2009 (20)

Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
 
Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)
 
ruby on rails e o mercado
ruby on rails e o mercadoruby on rails e o mercado
ruby on rails e o mercado
 
Introdução Ruby 1.8.7 + Rails 3
Introdução Ruby 1.8.7 + Rails 3Introdução Ruby 1.8.7 + Rails 3
Introdução Ruby 1.8.7 + Rails 3
 
Oficial
OficialOficial
Oficial
 
Workshop Ruby on Rails dia 2 ruby-pt
Workshop Ruby on Rails dia 2  ruby-ptWorkshop Ruby on Rails dia 2  ruby-pt
Workshop Ruby on Rails dia 2 ruby-pt
 
Quick introduction to Ruby on Rails
Quick introduction to Ruby on RailsQuick introduction to Ruby on Rails
Quick introduction to Ruby on Rails
 
Minicurso Ruby on Rails - Wake Up Systems
Minicurso Ruby on Rails - Wake Up SystemsMinicurso Ruby on Rails - Wake Up Systems
Minicurso Ruby on Rails - Wake Up Systems
 
Desenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsDesenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on Rails
 
Rails na prática
Rails na práticaRails na prática
Rails na prática
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 
Rails na pratica
Rails na praticaRails na pratica
Rails na pratica
 
Introdução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em RailsIntrodução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em Rails
 
Ruby on Rails e o Mercado
Ruby on Rails e o MercadoRuby on Rails e o Mercado
Ruby on Rails e o Mercado
 
Conhecendo o Ruby on Rails
Conhecendo o Ruby on RailsConhecendo o Ruby on Rails
Conhecendo o Ruby on Rails
 
Introducao ao desenvolvimento web com Rails
Introducao ao desenvolvimento web com RailsIntroducao ao desenvolvimento web com Rails
Introducao ao desenvolvimento web com Rails
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
 
Design Patterns on Rails
Design Patterns on RailsDesign Patterns on Rails
Design Patterns on Rails
 
Workshop Ruby on Rails dia 1 ruby-pt
Workshop Ruby on Rails dia 1 ruby-ptWorkshop Ruby on Rails dia 1 ruby-pt
Workshop Ruby on Rails dia 1 ruby-pt
 

Ruby Rails Brasil 2009