SlideShare una empresa de Scribd logo
1 de 55
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

JavaScript: agora é sério
JavaScript: agora é sérioJavaScript: agora é sério
JavaScript: agora é sérioLuciano 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
 
Ruby, Simples e Expressivo
Ruby, Simples e ExpressivoRuby, Simples e Expressivo
Ruby, Simples e ExpressivoRodrigo 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 UFBALuciano Borges
 
tmn - Introdução ao JavaScript
tmn - Introdução ao JavaScripttmn - Introdução ao JavaScript
tmn - Introdução ao JavaScriptClaudio Gamboa
 
Conhecendo Ruby on Rails
Conhecendo Ruby on RailsConhecendo Ruby on Rails
Conhecendo Ruby on RailsSergio Henrique
 
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 RTTIMario Guedes
 
Linguagens Dinamicas na JVM
Linguagens Dinamicas na JVMLinguagens Dinamicas na JVM
Linguagens Dinamicas na JVMWilliam Gouvea
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.comricobl
 
Desenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetosDesenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetosLucas Vegi
 
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 empresariaisRodrigo Recio
 
Testes com javascript
Testes com javascriptTestes com javascript
Testes com javascriptLaís Lima
 
Javascript levado a serio
Javascript levado a serioJavascript levado a serio
Javascript levado a serioJaydson Gomes
 

La actualidad más candente (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
 

Destacado

Introdução ao Ruby On Rails
Introdução ao Ruby On RailsIntrodução ao Ruby On Rails
Introdução ao Ruby On RailsMilton Moura
 
Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71Lindomar ...
 
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 RailsJulio Betta
 
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/01Douglas 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 RailsDante Regis
 
Desenvolvimento Ágil com Rails GURUSC 2011
Desenvolvimento Ágil com Rails GURUSC 2011Desenvolvimento Ágil com Rails GURUSC 2011
Desenvolvimento Ágil com Rails GURUSC 2011Andre 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 webMiguel Galves
 
Introducao ao Ruby On Rails
Introducao ao Ruby On RailsIntroducao ao Ruby On Rails
Introducao ao Ruby On RailsAndre Ferraro
 
Mini-curso RoR - Apresentação
Mini-curso RoR - ApresentaçãoMini-curso RoR - Apresentação
Mini-curso RoR - ApresentaçãoAgence Educacional
 
Segurança em Rails
Segurança em RailsSegurança em Rails
Segurança em RailsJuan Maiz
 
Apresentação ruby + rails 2014
Apresentação ruby + rails 2014Apresentação ruby + rails 2014
Apresentação ruby + rails 2014Marcelo Bohn
 
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
 
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 RubyDiego Rubin
 
Curso de Ruby on Rails
Curso de Ruby on RailsCurso de Ruby on Rails
Curso de Ruby on RailsCJR, UnB
 

Destacado (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
 

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

Rails - EXATEC2009
Rails - EXATEC2009Rails - EXATEC2009
Rails - EXATEC2009Caue 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 PythonLuciano 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 PlatformMilfont 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.jsVinicius Reis
 
Java+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso TotalJava+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso TotalEduardo Bregaida
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2PrinceGuru 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 FundamentosWilson Lima
 
ruby on rails e o mercado
ruby on rails e o mercadoruby on rails e o mercado
ruby on rails e o mercadoelliando dias
 
Palestra Faculdade Lourenço Filho
Palestra Faculdade Lourenço FilhoPalestra Faculdade Lourenço Filho
Palestra Faculdade Lourenço Filhorafarubert
 
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
 
TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013Giovanni Bassi
 
Ruby on Rails e o Mercado
Ruby on Rails e o MercadoRuby on Rails e o Mercado
Ruby on Rails e o MercadoJulio Monteiro
 

Similar 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

ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 

Último (8)

ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 

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