SlideShare uma empresa Scribd logo
Começando a programar na Web?
Então começe com Ruby on Rails.


         Ismael Stahelin
Precisa de um motivo?
    Que tal esse?
Origem
✔ Japão
✔ Yukihiro Matsumoto “Matz”
✔ 2000
   Programming Ruby (Dave Thomas)

✔ 2005
   Ruby on Rails (DHH)
Matz
Ruby


   “Linguagem de programação
dinâmica, interpretada, com uma
complexa, mas expressiva grammática
e uma biblioteca de classe com um
rico e poderoso API”
                         (The Ruby Programming language)
Influências


✔ Lisp
✔ Smalltalk
✔ Perl
Tipos básicos
Variáveis

✔   local = 1
✔   @instancia = “meu nome”
✔   @@classe = /.*/
✔   $global = “alguém me vê?”
Visibilidade

✔ public
✔ Initialize é sempre private
✔ Todos

✔ protected
✔ Instâncias da classe e subclasses

✔ private
✔ Instâncias da classe e subclasses*
Visibilidade para programadores
                             Java

   “Private é para o Ruby o que
     Protected é para o Java”

def <=>(other)
 self.age <=> other.age
end
public, protected, private

class Carro
  public ou protected ou private
    def ano
      @ano
    end
    def ano=(ano)
      @ano = ano
    end
end
public, protected, private
class Carro
    def ano
      @ano
    end
    def ano=(ano)
      @ano = ano
    End
  public :ano, :ano=
  protected :ano, :ano=
  private :ano, :ano=
end
Blocos de código

#executando métodos que aceitam blocos

metodo do |var|
  #corpo do bloco
end

ou

metodo { |var| #corpo do bloco }
Orientação a objetos



✔ Tudo é um objeto
✔ Operações são métodos
✔ Métodos sempre retornam valor
Tudo é um objeto


irb(main):001:0>   1.class         #=>   Fixnum
irb(main):002:0>   1.0.class       #=>   Float
irb(main):003:0>   true.class      #=>   TrueClass
irb(main):004:0>   false.class     #=>   FalseClass
irb(main):005:0>   nil.class       #=>   NilClass
irb(main):006:0>   /.*/.class      #=>   Regexp
irb(main):007:0>   "Hello".class   #=>   String
irb(main):008:0>   :nome.class     #=>   Symbol
Operações são métodos
irb(main):002:0> 1.public_methods.sort
=> ["%", "&", "*", "**", "+", "+@", "-", "-
@", "/", "<", "<<", "<=", "<=>", "==", "===",
"=~", ">", ">=", ">>", "[]", "^", "__id__",
"__send__", "abs", "between?", "ceil", "chr",
"class", "clone", "coerce", "display", "div",
"divmod", "downto", "dup", "enum_for",
"eql?", "equal?", "even?", "extend", "fdiv",
"floor", "freeze", "frozen?", "hash", "id",
"id2name", "inspect", "instance_eval",
"instance_exec" ... ]
Métodos sempre retornam valor



irb(main):001:0> puts "Hello World"
Hello World
=> nil
Mais OO em Ruby

✔   Herança simples
✔   Mixins
✔   Módulos
✔   Duck typing
✔   Tratamento de exceções
✔   Closures
✔   Open classes
Open classes


class Fixnum
  def +(outro)
    self - outro
  end
end
Mas isso não é perigoso?
“Em toda profssão existem os bons
     e os maus profssionais”
Ruby é multi-paradigma



✔   Orientada a objetos
✔   Procedural
✔   Funcional
✔   Metaprogramação
Metaprogramação em Ruby
class Aluno
  #não sabe nada
End                                             Exemplo retirado da
                                              apostila R71 da Caelum.
                                       O melhor exemplo de metaprogramação
                                                     que eu já vi!
class Professor
  def ensina(aluno)
    def aluno.escreve
      “sei escrever!”
    end
  end
end

juca = Aluno.new
juca.respond_to? :escreve # => false

professor = Professor.new
professor.ensina juca
juca.escreve # => “sei escrever!”
Açucar sintático

✔   attr_accessor
✔   Uso de parêntese opcional
✔   “return” é opcional
✔   API expressiva
✔   3.times {print “Oi”}
✔   1.upto(4) {|i| puts i}
✔   10 + 3 # => 10.+(3)
Ok, e porque eu deveria usar Ruby?
       Fale das vantagens...
Pontos positivos


✔   Garbage collector
✔   Extensível via C
✔   Multi-plataforma
✔   DSL

      File.foreach("arq.txt") { |line| puts line }
Pontos negativos


✔   Matemática científca
✔   Manipulação de imagens
✔   Threads
✔   I/O para grandes arquivos
✔   Performance
Plataformas


✔ Linux
✔ Mac OS
✔ Windows
Implementações

✔   MRI (original)
✔   JRuby
✔   IronRuby
✔   Rubinius
✔   Cardinal
✔   MagLev
Já cansou?
Instalando o Ruby

http://www.ruby-lang.org/en/downloads/

              Next > Next > Finish



              port install ruby


              sudo apt-get install ruby-full
Origem

✔ David Heinemeier Hansson (23)
  Experiências com Java e PHP

✔ 2005
✔ Extraído de projeto real
✔ Metaframework
  Composto por outros frameworks
DHH
Ruby on Rails
✔ Convention over Confguration
✔ Don't Repeat Yourself
✔ MVC
✔ Modelo de dados avançado
✔ Software com opinião
✔ Scaffold (CRUD)
Tirando você e o Zézinho da
padaria, quem mais usa Rails?
Big players
    Amazon.com                                        BBC
    CapGemini                                         BPN
    Cisco                                             C|Net
    EA (Electronic Arts)                              IBM
    JP Morgan                                         NASA
    Oakley                                            Oracle
    Siemens                                           ThoughtWorks
    Yahoo!

Fonte: http://blog.obiefernandez.com/content/2008/03/big-name-compan.html
Estrutura do projeto
Estrutura do projeto.

app : onde fca o código da aplicação
  controllers : tratam os requests
  helpers : métodos utilitários, visíveis en controllers e views
  models : persistência e lógica de negócios
  views : layouts e páginas dinâmicas
confg : arquivos de confguração
  environments : production, development e test
  initializers : executados na inicialização da aplicação
Estrutura do projeto..

db : arquivos referentes ao banco de dados
  migrations : migrações da base de dados
doc : documentação do código
lib : código ruby que não é: controller, model ou helper
tasks : tarefas do rake personalizadas
log : todos os arquivos de log da aplicação
Estrutura do projeto...

public : arquivos estáticos
  images : diretório de imagens
  javascripts : diretório de javascripts
  stylesheets : diretório de css
script : scripts do Rails como generate e console
test : todos os testes da aplicação, de todos os tipos
tmp : arquivos temporários de uso do rails
vendor : plugins, rubygems e até mesmo o rails
Composição

✔ ActiveSupport     (infra)

✔ ActiveRecord    (persistência)

✔ ActionPack   (visualização)

✔ ActionMailer   (e-mail)

✔ ActiveResources      (RESTfull)
Pilhas incluídas


✔ Servidores      (WEBrick, Mogrel)

✔ BD   (Sqlite3, Mysql, Postgres, Oracle)
Boas práticas
✔ Siga as convênções
✔ Modelos gordos
✔ Controllers magros
✔ Nomes de entidades em inglês
✔ Tabelas são entidades no plural
✔ FK = <nome_entidade>_id
Scripts

✔   about (informações de versões dos componentes)
✔   console (console com o ambiente da aplicação)
✔   dbconsole (console padrão do banco de dados)
✔   destroy (remover código gerado)
✔   generate (gera código da aplicação automático)
✔   plugin (instala/desinstala plugins)
✔   runner (automatizar tarefas)
✔   server (inicia o servidor da aplicação)
Rake para automatizar

✔ Ferramenta de build (make, ant)
✔ Instalação
 ✔ gem install rake

✔ Tarefas disponíveis
 ✔ rake -T
                      rake db:create
                      rake db:migrate
Migrações

✔ Versionamento do Banco de dados
✔ Executadas 1x (sequencial)
✔ Desenvolvedor é responsável
✔ 2 passos sempre:
 ✔ Realiza alteração
 ✔ Desfaz alteração
ActiveRecord::Migration

class CriarContatos < ActiveRecord::Migrations
 def self.up
   create_table :contatos do |t|
     t.string :nome
     t.string :email
     t.string :telefone
     t.string :endereco
   end
 end

 def self.down
    drop_table :contatos
 end
end
Perguntas?
Hands On!

Agora vamos ver na prática.
http://www.ruby-lang.org        Sites
http://tryruby.org
http://guides.rubyonrails.org
http://railsapi.com
http://railstips.org
http://gemcutter.org
http://rubyforge.org
http://railscasts.com
Livros e apostilas


✔ Ruby on Rails [Rodrigo Urubatan – Novatec]
✔ Caelum – Apostila RR71
✔ A linguagem de Programação Ruby [Matz]
Obrigado :-)

✔ ismael.stahelin@gmail.com
✔ @ismaels
✔ http://ismaels.net

Mais conteúdo relacionado

Mais procurados

Ruby
RubyRuby
JavaScript: agora é sério
JavaScript: agora é sérioJavaScript: agora é sério
JavaScript: agora é sério
Luciano Ramalho
 
Grails, o que isso quer dizer?
Grails, o que isso quer dizer?Grails, o que isso quer dizer?
Grails, o que isso quer dizer?
Gilliard Cordeiro
 
Curso de Groovy
Curso de GroovyCurso de Groovy
Curso de Groovy
Bruno Nascimento
 
Ruby, Simples e Expressivo
Ruby, Simples e ExpressivoRuby, Simples e Expressivo
Ruby, Simples e Expressivo
Rodrigo Martins
 
Apresentação Ruby no Dojo da UFBA
Apresentação Ruby no Dojo da UFBAApresentação Ruby no Dojo da UFBA
Apresentação Ruby no Dojo da UFBA
Luciano Borges
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
Sergio Henrique
 
tmn - Introdução ao JavaScript
tmn - Introdução ao JavaScripttmn - Introdução ao JavaScript
tmn - Introdução ao JavaScript
Claudio Gamboa
 
Frameworks PHP
Frameworks PHPFrameworks PHP
Frameworks PHP
Augusto Pascutti
 
Conhecendo Ruby on Rails
Conhecendo Ruby on RailsConhecendo Ruby on Rails
Conhecendo Ruby on Rails
Sergio Henrique
 
A Linguagem Ruby
A Linguagem RubyA Linguagem Ruby
A Linguagem Ruby
Juliano Flores
 
Java20141215 17[1]
Java20141215 17[1]Java20141215 17[1]
Java20141215 17[1]
Diogo Rafael da Silva
 
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTIDelphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
Mario Guedes
 
Linguagens Dinamicas na JVM
Linguagens Dinamicas na JVMLinguagens Dinamicas na JVM
Linguagens Dinamicas na JVM
William Gouvea
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.com
ricobl
 
Desenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetosDesenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetos
Lucas Vegi
 
Javascript aula 01 - visão geral
Javascript   aula 01 - visão geralJavascript   aula 01 - visão geral
Javascript aula 01 - visão geral
Cristiano Pires Martins
 
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Rodrigo Recio
 
Testes com javascript
Testes com javascriptTestes com javascript
Testes com javascript
Laís Lima
 
Javascript levado a serio
Javascript levado a serioJavascript levado a serio
Javascript levado a serio
Jaydson Gomes
 

Mais procurados (20)

Ruby
RubyRuby
Ruby
 
JavaScript: agora é sério
JavaScript: agora é sérioJavaScript: agora é sério
JavaScript: agora é sério
 
Grails, o que isso quer dizer?
Grails, o que isso quer dizer?Grails, o que isso quer dizer?
Grails, o que isso quer dizer?
 
Curso de Groovy
Curso de GroovyCurso de Groovy
Curso de Groovy
 
Ruby, Simples e Expressivo
Ruby, Simples e ExpressivoRuby, Simples e Expressivo
Ruby, Simples e Expressivo
 
Apresentação Ruby no Dojo da UFBA
Apresentação Ruby no Dojo da UFBAApresentação Ruby no Dojo da UFBA
Apresentação Ruby no Dojo da UFBA
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 
tmn - Introdução ao JavaScript
tmn - Introdução ao JavaScripttmn - Introdução ao JavaScript
tmn - Introdução ao JavaScript
 
Frameworks PHP
Frameworks PHPFrameworks PHP
Frameworks PHP
 
Conhecendo Ruby on Rails
Conhecendo Ruby on RailsConhecendo Ruby on Rails
Conhecendo Ruby on Rails
 
A Linguagem Ruby
A Linguagem RubyA Linguagem Ruby
A Linguagem Ruby
 
Java20141215 17[1]
Java20141215 17[1]Java20141215 17[1]
Java20141215 17[1]
 
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTIDelphi Conference 2012 - Programação Baseado em Regras com RTTI
Delphi Conference 2012 - Programação Baseado em Regras com RTTI
 
Linguagens Dinamicas na JVM
Linguagens Dinamicas na JVMLinguagens Dinamicas na JVM
Linguagens Dinamicas na JVM
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.com
 
Desenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetosDesenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetos
 
Javascript aula 01 - visão geral
Javascript   aula 01 - visão geralJavascript   aula 01 - visão geral
Javascript aula 01 - visão geral
 
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
 
Testes com javascript
Testes com javascriptTestes com javascript
Testes com javascript
 
Javascript levado a serio
Javascript levado a serioJavascript levado a serio
Javascript levado a serio
 

Destaque

Introdução ao Ruby On Rails
Introdução ao Ruby On RailsIntrodução ao Ruby On Rails
Introdução ao Ruby On Rails
Milton Moura
 
Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71
Lindomar ...
 
Introdução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on RailsIntrodução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on Rails
Julio Betta
 
SEA Rails na pratica
SEA Rails na praticaSEA Rails na pratica
SEA Rails na pratica
Túlio Ornelas
 
Mini-curso RoR - Aula 01
Mini-curso RoR - Aula 01Mini-curso RoR - Aula 01
Mini-curso RoR - Aula 01
Agence Educacional
 
Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01
Douglas Roeder
 
[PDF] Repensando o Desenvolvimento Web com Ruby on Rails
[PDF] Repensando o Desenvolvimento Web com Ruby on Rails[PDF] Repensando o Desenvolvimento Web com Ruby on Rails
[PDF] Repensando o Desenvolvimento Web com Ruby on Rails
Dante Regis
 
Desenvolvimento Ágil com Rails GURUSC 2011
Desenvolvimento Ágil com Rails GURUSC 2011Desenvolvimento Ágil com Rails GURUSC 2011
Desenvolvimento Ágil com Rails GURUSC 2011
Andre Bernardes
 
Django: Uso de frameworks ágeis para desenvolvimento web
Django: Uso de frameworks ágeis para desenvolvimento webDjango: Uso de frameworks ágeis para desenvolvimento web
Django: Uso de frameworks ágeis para desenvolvimento web
Miguel Galves
 
Introducao ao Ruby On Rails
Introducao ao Ruby On RailsIntroducao ao Ruby On Rails
Introducao ao Ruby On Rails
Andre Ferraro
 
Mini-curso RoR - Apresentação
Mini-curso RoR - ApresentaçãoMini-curso RoR - Apresentação
Mini-curso RoR - Apresentação
Agence Educacional
 
Segurança em Rails
Segurança em RailsSegurança em Rails
Segurança em Rails
Juan Maiz
 
Rails na pratica
Rails na praticaRails na pratica
Rails na pratica
Túlio Ornelas
 
Apresentação ruby + rails 2014
Apresentação ruby + rails 2014Apresentação ruby + rails 2014
Apresentação ruby + rails 2014
Marcelo Bohn
 
Conhecendo o Django
Conhecendo o DjangoConhecendo o Django
Conhecendo o Django
Marcos Thomaz
 
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
Lucas Caton
 
Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!
Felipe Queiroz
 
Introdução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação RubyIntrodução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação Ruby
Diego Rubin
 
Curso de Ruby on Rails
Curso de Ruby on RailsCurso de Ruby on Rails
Curso de Ruby on Rails
CJR, UnB
 
Ruby Beyond Rails
Ruby Beyond RailsRuby Beyond Rails
Ruby Beyond Rails
Gaveen Prabhasara
 

Destaque (20)

Introdução ao Ruby On Rails
Introdução ao Ruby On RailsIntrodução ao Ruby On Rails
Introdução ao Ruby On Rails
 
Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71
 
Introdução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on RailsIntrodução ao Desenvolvimento WEB com Ruby on Rails
Introdução ao Desenvolvimento WEB com Ruby on Rails
 
SEA Rails na pratica
SEA Rails na praticaSEA Rails na pratica
SEA Rails na pratica
 
Mini-curso RoR - Aula 01
Mini-curso RoR - Aula 01Mini-curso RoR - Aula 01
Mini-curso RoR - Aula 01
 
Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01
 
[PDF] Repensando o Desenvolvimento Web com Ruby on Rails
[PDF] Repensando o Desenvolvimento Web com Ruby on Rails[PDF] Repensando o Desenvolvimento Web com Ruby on Rails
[PDF] Repensando o Desenvolvimento Web com Ruby on Rails
 
Desenvolvimento Ágil com Rails GURUSC 2011
Desenvolvimento Ágil com Rails GURUSC 2011Desenvolvimento Ágil com Rails GURUSC 2011
Desenvolvimento Ágil com Rails GURUSC 2011
 
Django: Uso de frameworks ágeis para desenvolvimento web
Django: Uso de frameworks ágeis para desenvolvimento webDjango: Uso de frameworks ágeis para desenvolvimento web
Django: Uso de frameworks ágeis para desenvolvimento web
 
Introducao ao Ruby On Rails
Introducao ao Ruby On RailsIntroducao ao Ruby On Rails
Introducao ao Ruby On Rails
 
Mini-curso RoR - Apresentação
Mini-curso RoR - ApresentaçãoMini-curso RoR - Apresentação
Mini-curso RoR - Apresentação
 
Segurança em Rails
Segurança em RailsSegurança em Rails
Segurança em Rails
 
Rails na pratica
Rails na praticaRails na pratica
Rails na pratica
 
Apresentação ruby + rails 2014
Apresentação ruby + rails 2014Apresentação ruby + rails 2014
Apresentação ruby + rails 2014
 
Conhecendo o Django
Conhecendo o DjangoConhecendo o Django
Conhecendo o Django
 
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
 
Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!
 
Introdução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação RubyIntrodução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação Ruby
 
Curso de Ruby on Rails
Curso de Ruby on RailsCurso de Ruby on Rails
Curso de Ruby on Rails
 
Ruby Beyond Rails
Ruby Beyond RailsRuby Beyond Rails
Ruby Beyond Rails
 

Semelhante a Esta começando a programar para a web? Então começe com Rails

Rails - EXATEC2009
Rails - EXATEC2009Rails - EXATEC2009
Rails - EXATEC2009
Caue Guerra
 
Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)
Julio Monteiro
 
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
 
Introdução ao Rails (Linguagil)
Introdução ao Rails (Linguagil)Introdução ao Rails (Linguagil)
Introdução ao Rails (Linguagil)
Daniel Lopes
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem Python
Luciano Ramalho
 
Conhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java PlatformConhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java Platform
Milfont Consulting
 
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsJava script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Vinicius Reis
 
Java+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso TotalJava+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso Total
Eduardo Bregaida
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
PrinceGuru MS
 
DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015 DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015
Eduardo Bregaida
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java Fundamentos
Wilson Lima
 
ruby on rails e o mercado
ruby on rails e o mercadoruby on rails e o mercado
ruby on rails e o mercado
elliando dias
 
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
Régis Eduardo Weizenmann Gregol
 
Oficial
OficialOficial
Palestra Faculdade Lourenço Filho
Palestra Faculdade Lourenço FilhoPalestra Faculdade Lourenço Filho
Palestra Faculdade Lourenço Filho
rafarubert
 
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
overduka
 
TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013
Giovanni Bassi
 
Jsummit 2014
Jsummit 2014Jsummit 2014
Jsummit 2014
Otávio Santana
 
Ruby on Rails e o Mercado
Ruby on Rails e o MercadoRuby on Rails e o Mercado
Ruby on Rails e o Mercado
Julio Monteiro
 
Behaviour-Driven Development com Ruby
Behaviour-Driven Development com RubyBehaviour-Driven Development com Ruby
Behaviour-Driven Development com Ruby
Jony dos Santos Kostetzer
 

Semelhante a Esta começando a programar para a web? Então começe com Rails (20)

Rails - EXATEC2009
Rails - EXATEC2009Rails - EXATEC2009
Rails - EXATEC2009
 
Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)
 
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)
 
Introdução ao Rails (Linguagil)
Introdução ao Rails (Linguagil)Introdução ao Rails (Linguagil)
Introdução ao Rails (Linguagil)
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem Python
 
Conhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java PlatformConhecendo a JSR 223: Scripting for the Java Platform
Conhecendo a JSR 223: Scripting for the Java Platform
 
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsJava script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
 
Java+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso TotalJava+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso Total
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
 
DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015 DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java Fundamentos
 
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
 
Palestra Faculdade Lourenço Filho
Palestra Faculdade Lourenço FilhoPalestra Faculdade Lourenço Filho
Palestra Faculdade Lourenço Filho
 
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
 
TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013
 
Jsummit 2014
Jsummit 2014Jsummit 2014
Jsummit 2014
 
Ruby on Rails e o Mercado
Ruby on Rails e o MercadoRuby on Rails e o Mercado
Ruby on Rails e o Mercado
 
Behaviour-Driven Development com Ruby
Behaviour-Driven Development com RubyBehaviour-Driven Development com Ruby
Behaviour-Driven Development com Ruby
 

Último

REDE_DE_COMPUTADORES_TECNOLOGIA_TIPOS.pptx
REDE_DE_COMPUTADORES_TECNOLOGIA_TIPOS.pptxREDE_DE_COMPUTADORES_TECNOLOGIA_TIPOS.pptx
REDE_DE_COMPUTADORES_TECNOLOGIA_TIPOS.pptx
IranyGarcia
 
Como fui de 0 a lead na gringa em 3 anos.pptx
Como fui de 0 a lead na gringa em 3 anos.pptxComo fui de 0 a lead na gringa em 3 anos.pptx
Como fui de 0 a lead na gringa em 3 anos.pptx
tnrlucas
 
PRATICANDO O SCRUM Scrum team, product owner
PRATICANDO O SCRUM Scrum team, product ownerPRATICANDO O SCRUM Scrum team, product owner
PRATICANDO O SCRUM Scrum team, product owner
anpproferick
 
Gestão de dados: sua importância e benefícios
Gestão de dados: sua importância e benefíciosGestão de dados: sua importância e benefícios
Gestão de dados: sua importância e benefícios
Rafael Santos
 
Teoria de redes de computadores redes .doc
Teoria de redes de computadores redes .docTeoria de redes de computadores redes .doc
Teoria de redes de computadores redes .doc
anpproferick
 
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Annelise Gripp
 

Último (6)

REDE_DE_COMPUTADORES_TECNOLOGIA_TIPOS.pptx
REDE_DE_COMPUTADORES_TECNOLOGIA_TIPOS.pptxREDE_DE_COMPUTADORES_TECNOLOGIA_TIPOS.pptx
REDE_DE_COMPUTADORES_TECNOLOGIA_TIPOS.pptx
 
Como fui de 0 a lead na gringa em 3 anos.pptx
Como fui de 0 a lead na gringa em 3 anos.pptxComo fui de 0 a lead na gringa em 3 anos.pptx
Como fui de 0 a lead na gringa em 3 anos.pptx
 
PRATICANDO O SCRUM Scrum team, product owner
PRATICANDO O SCRUM Scrum team, product ownerPRATICANDO O SCRUM Scrum team, product owner
PRATICANDO O SCRUM Scrum team, product owner
 
Gestão de dados: sua importância e benefícios
Gestão de dados: sua importância e benefíciosGestão de dados: sua importância e benefícios
Gestão de dados: sua importância e benefícios
 
Teoria de redes de computadores redes .doc
Teoria de redes de computadores redes .docTeoria de redes de computadores redes .doc
Teoria de redes de computadores redes .doc
 
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
 

Esta começando a programar para a web? Então começe com Rails

  • 1. Começando a programar na Web? Então começe com Ruby on Rails. Ismael Stahelin
  • 2. Precisa de um motivo? Que tal esse?
  • 3.
  • 4.
  • 5. Origem ✔ Japão ✔ Yukihiro Matsumoto “Matz” ✔ 2000 Programming Ruby (Dave Thomas) ✔ 2005 Ruby on Rails (DHH)
  • 7. Ruby “Linguagem de programação dinâmica, interpretada, com uma complexa, mas expressiva grammática e uma biblioteca de classe com um rico e poderoso API” (The Ruby Programming language)
  • 10. Variáveis ✔ local = 1 ✔ @instancia = “meu nome” ✔ @@classe = /.*/ ✔ $global = “alguém me vê?”
  • 11. Visibilidade ✔ public ✔ Initialize é sempre private ✔ Todos ✔ protected ✔ Instâncias da classe e subclasses ✔ private ✔ Instâncias da classe e subclasses*
  • 12. Visibilidade para programadores Java “Private é para o Ruby o que Protected é para o Java” def <=>(other) self.age <=> other.age end
  • 13. public, protected, private class Carro public ou protected ou private def ano @ano end def ano=(ano) @ano = ano end end
  • 14. public, protected, private class Carro def ano @ano end def ano=(ano) @ano = ano End public :ano, :ano= protected :ano, :ano= private :ano, :ano= end
  • 15. Blocos de código #executando métodos que aceitam blocos metodo do |var| #corpo do bloco end ou metodo { |var| #corpo do bloco }
  • 16. Orientação a objetos ✔ Tudo é um objeto ✔ Operações são métodos ✔ Métodos sempre retornam valor
  • 17. Tudo é um objeto irb(main):001:0> 1.class #=> Fixnum irb(main):002:0> 1.0.class #=> Float irb(main):003:0> true.class #=> TrueClass irb(main):004:0> false.class #=> FalseClass irb(main):005:0> nil.class #=> NilClass irb(main):006:0> /.*/.class #=> Regexp irb(main):007:0> "Hello".class #=> String irb(main):008:0> :nome.class #=> Symbol
  • 18. Operações são métodos irb(main):002:0> 1.public_methods.sort => ["%", "&", "*", "**", "+", "+@", "-", "- @", "/", "<", "<<", "<=", "<=>", "==", "===", "=~", ">", ">=", ">>", "[]", "^", "__id__", "__send__", "abs", "between?", "ceil", "chr", "class", "clone", "coerce", "display", "div", "divmod", "downto", "dup", "enum_for", "eql?", "equal?", "even?", "extend", "fdiv", "floor", "freeze", "frozen?", "hash", "id", "id2name", "inspect", "instance_eval", "instance_exec" ... ]
  • 19. Métodos sempre retornam valor irb(main):001:0> puts "Hello World" Hello World => nil
  • 20. Mais OO em Ruby ✔ Herança simples ✔ Mixins ✔ Módulos ✔ Duck typing ✔ Tratamento de exceções ✔ Closures ✔ Open classes
  • 21. Open classes class Fixnum def +(outro) self - outro end end
  • 22. Mas isso não é perigoso?
  • 23. “Em toda profssão existem os bons e os maus profssionais”
  • 24. Ruby é multi-paradigma ✔ Orientada a objetos ✔ Procedural ✔ Funcional ✔ Metaprogramação
  • 25. Metaprogramação em Ruby class Aluno #não sabe nada End Exemplo retirado da apostila R71 da Caelum. O melhor exemplo de metaprogramação que eu já vi! class Professor def ensina(aluno) def aluno.escreve “sei escrever!” end end end juca = Aluno.new juca.respond_to? :escreve # => false professor = Professor.new professor.ensina juca juca.escreve # => “sei escrever!”
  • 26. Açucar sintático ✔ attr_accessor ✔ Uso de parêntese opcional ✔ “return” é opcional ✔ API expressiva ✔ 3.times {print “Oi”} ✔ 1.upto(4) {|i| puts i} ✔ 10 + 3 # => 10.+(3)
  • 27. Ok, e porque eu deveria usar Ruby? Fale das vantagens...
  • 28. Pontos positivos ✔ Garbage collector ✔ Extensível via C ✔ Multi-plataforma ✔ DSL File.foreach("arq.txt") { |line| puts line }
  • 29. Pontos negativos ✔ Matemática científca ✔ Manipulação de imagens ✔ Threads ✔ I/O para grandes arquivos ✔ Performance
  • 31. Implementações ✔ MRI (original) ✔ JRuby ✔ IronRuby ✔ Rubinius ✔ Cardinal ✔ MagLev
  • 33. Instalando o Ruby http://www.ruby-lang.org/en/downloads/ Next > Next > Finish port install ruby sudo apt-get install ruby-full
  • 34.
  • 35. Origem ✔ David Heinemeier Hansson (23) Experiências com Java e PHP ✔ 2005 ✔ Extraído de projeto real ✔ Metaframework Composto por outros frameworks
  • 36. DHH
  • 37. Ruby on Rails ✔ Convention over Confguration ✔ Don't Repeat Yourself ✔ MVC ✔ Modelo de dados avançado ✔ Software com opinião ✔ Scaffold (CRUD)
  • 38. Tirando você e o Zézinho da padaria, quem mais usa Rails?
  • 39. Big players Amazon.com BBC CapGemini BPN Cisco C|Net EA (Electronic Arts) IBM JP Morgan NASA Oakley Oracle Siemens ThoughtWorks Yahoo! Fonte: http://blog.obiefernandez.com/content/2008/03/big-name-compan.html
  • 41. Estrutura do projeto. app : onde fca o código da aplicação controllers : tratam os requests helpers : métodos utilitários, visíveis en controllers e views models : persistência e lógica de negócios views : layouts e páginas dinâmicas confg : arquivos de confguração environments : production, development e test initializers : executados na inicialização da aplicação
  • 42. Estrutura do projeto.. db : arquivos referentes ao banco de dados migrations : migrações da base de dados doc : documentação do código lib : código ruby que não é: controller, model ou helper tasks : tarefas do rake personalizadas log : todos os arquivos de log da aplicação
  • 43. Estrutura do projeto... public : arquivos estáticos images : diretório de imagens javascripts : diretório de javascripts stylesheets : diretório de css script : scripts do Rails como generate e console test : todos os testes da aplicação, de todos os tipos tmp : arquivos temporários de uso do rails vendor : plugins, rubygems e até mesmo o rails
  • 44. Composição ✔ ActiveSupport (infra) ✔ ActiveRecord (persistência) ✔ ActionPack (visualização) ✔ ActionMailer (e-mail) ✔ ActiveResources (RESTfull)
  • 45. Pilhas incluídas ✔ Servidores (WEBrick, Mogrel) ✔ BD (Sqlite3, Mysql, Postgres, Oracle)
  • 46. Boas práticas ✔ Siga as convênções ✔ Modelos gordos ✔ Controllers magros ✔ Nomes de entidades em inglês ✔ Tabelas são entidades no plural ✔ FK = <nome_entidade>_id
  • 47. Scripts ✔ about (informações de versões dos componentes) ✔ console (console com o ambiente da aplicação) ✔ dbconsole (console padrão do banco de dados) ✔ destroy (remover código gerado) ✔ generate (gera código da aplicação automático) ✔ plugin (instala/desinstala plugins) ✔ runner (automatizar tarefas) ✔ server (inicia o servidor da aplicação)
  • 48. Rake para automatizar ✔ Ferramenta de build (make, ant) ✔ Instalação ✔ gem install rake ✔ Tarefas disponíveis ✔ rake -T rake db:create rake db:migrate
  • 49. Migrações ✔ Versionamento do Banco de dados ✔ Executadas 1x (sequencial) ✔ Desenvolvedor é responsável ✔ 2 passos sempre: ✔ Realiza alteração ✔ Desfaz alteração
  • 50. ActiveRecord::Migration class CriarContatos < ActiveRecord::Migrations def self.up create_table :contatos do |t| t.string :nome t.string :email t.string :telefone t.string :endereco end end def self.down drop_table :contatos end end
  • 52. Hands On! Agora vamos ver na prática.
  • 53. http://www.ruby-lang.org Sites http://tryruby.org http://guides.rubyonrails.org http://railsapi.com http://railstips.org http://gemcutter.org http://rubyforge.org http://railscasts.com
  • 54. Livros e apostilas ✔ Ruby on Rails [Rodrigo Urubatan – Novatec] ✔ Caelum – Apostila RR71 ✔ A linguagem de Programação Ruby [Matz]
  • 55. Obrigado :-) ✔ ismael.stahelin@gmail.com ✔ @ismaels ✔ http://ismaels.net