SlideShare une entreprise Scribd logo
1  sur  83
Télécharger pour lire hors ligne
Ruby on Rails na prática




             Túlio Ornelas
Agenda
•   Ruby
•   Rails
•   Instalando o Rails
•   Criando um projeto
•   Criando primeiro C.R.U.D
•   Validando C.R.U.D
•   Segundo C.R.U.D
Um pouco sobre Ruby
•   Criada em 1993 por Yukihiro Matz
•   Linguagem interpretada
•   Tipagem dinâmica
•   Fortemente tipada
•   Orientada a objetos
•   Livre
•   http://www.ruby-lang.org/
Um pouco sobre Ruby
• Instalando
   Linux: sudo apt-get install ruby
   Windows: One-click-installer
     • http://www.ruby-lang.org/pt/downloads/
   Mac OS/X: port install ruby

• Testando a instalação
    ruby -v
    Irb -v
Um pouco sobre Ruby
• Interpretando um arquivo




• Interpretando diretamente um comando
Um pouco sobre Ruby
• Em Ruby tudo é OO
Um pouco sobre Ruby
• Criando uma classe
   Em Ruby:




   Em Java:
Um pouco sobre Ruby
• Criando um objeto:
   Ruby:




   Java:




  Note a sintaxe simplificada! Não é necessário
  declarar, a variável é criada quando utilizada.
Um pouco sobre Ruby
• Criando uma classe com método e
  construtor:
   Ruby                   Java
Um pouco sobre Ruby
• Variáveis:
   Local:

   De instância:

   De classe:

 Variáveis de classe são comparadas a atributos
 estáticos (static) em java.
Um pouco sobre Ruby
• Métodos
   De instância:




   Da classe:




   Privados e Protegidos:
Um pouco sobre Ruby
• Criando métodos de acesso as variáveis




• attr_accessor e attr_reader são métodos
  que geram os métodos get/set
  dinamicamente
Um pouco sobre Ruby
            • Reestruturando
              nossa classe
              User
Um pouco sobre Ruby
• Herança
Um pouco sobre Ruby
• Testando a herança
Um pouco sobre Ruby
• Booleans

   As únicas coisas falsas em Ruby são nil e false
Um pouco sobre Ruby
Um pouco sobre Ruby
• LAB
   Dado um número imprimir todos os ímpares
    até ele
Um pouco sobre Ruby
• Solução
Quer aprender mais?




http://www.pragprog.com/
O que é o Rails?
• Meta-Framework MVC
• Desenvolvido em linguagem Ruby
Rails
• Lançado em julho de 2004

• Solução completa, produtiva com baixa
  curva de aprendizagem

• Conceitos:
   DRY (Don’t Repeat yourself)
   Convention of configuration
Rails - composição
• O Rails é a junção de 5 frameworks, são
  eles:

     Active Record (ORM)
     Action Pack (MVC)
     Action Mailer
     Action Support
     Action WebServices
Rails - instalando
• O Rails é uma rubygem, por isso precisamos
  do gem corretamente instalado.
• Uma “gem” é código ruby empacotado. Pode
  ser comparado ao .jar em Java.




• Rubygems é instalado junto com o ruby,
  caso contrário: sudo apt-get install rubygems
Rails - instalando
• Dependências:
   libsqlite3-dev
   ruby1.8-dev
• Abra o console e digite:
    gem install sqlite3-ruby (driver)
    gem install rails
  *Confirme a instalação das dependências quando solicitado.
Rails - instalando
• Verificando a instalação
Rails – criando o projeto
• Para criar um projeto utilize o comando:
   Rails <nome do projeto>
• Por exemplo:
   Rails bug_tracking



• Dessa forma o rails Irá gerar o arcabouço
  de um projeto MVC
Rails – criando o projeto
• Vamos criar o projeto bug_tracking
Rails – criando o projeto
• Vamos subir o servidor com ruby script/server e entrar
  na URL http://localhost:3000
Rails – criando o projeto
• Note que nosso projeto não tem nada.
  Vejamos as configurações do nosso
  ambiente:
Rails – o projeto
• Analisaremos apenas o diretório app por
  enquanto

• Controllers => Diretório com os controladores da
                 aplicação
• Models      => Os modelos do seu domínio
• Views       => As telas
• Helpers     => Classes de ajuda (conversão,
                 etc)
Rails
• Scripts padrões do Rails, vejamos dois:
   Generate => Cria uma estrutura básica para
                um modelo.
   Server   => Inicia o servidor da aplicação.


• Modo de usar:
   Ruby script/generate <parâmetros>
   Ruby script/server
Rails
• Antes de continuar o desenvolvimento
  devemos conhecer o rake


   Um utilitário Ruby semelhante ao make
    do C/C++, ou Ant no Java.
   Exemplo:
    • Rake db:create:all
Rails
• Configuração do banco em
  config/database.yml
 O banco padrão do Rails é o
 SQLite3 que é um banco de
 dados embarcado

  São criados 3 contextos:
  desenvolvimento, teste e
  produção
Rails – primeiro C.R.U.D
• Vamos utilizar o gerador scaffold
  (andaime) que é um gerador de c.r.u.d

   ruby script/generate scaffold project name:string
   description:string owner:string


• Note que os atributos do seu modelo são
  passados para o script, e ele irá gerar
  uma migrate correspondente.
Rails – primeiro C.R.U.D
• Saída do scaffold:




 Migrations (migrações) são um forma de evoluir o
 schema do banco de dados
Rails – primeiro C.R.U.D
• Antes de analisarmos o ocorrido, vamos
  terminar a criação do nosso modelo.
• Execute os comandos:
   Rake db:create:all   O comando db:migrate irá aplicar as
                        migrations que ainda não foram
   Rake db:migrate      aplicadas.
Rails – primeiro C.R.U.D
• Saída do db:migrate
Rails – primeiro C.R.U.D
• Acesse a URL http://localhost:3000/projects
Rails – primeiro C.R.U.D
• Vamos analisar os comandos do rake
  utilizados:

               Rake db:create:all
   Esse comando utiliza o rake para criar as
    tabelas para todos os modelos ainda não
    criados
Rails – primeiro C.R.U.D
               Rake db:migrate

   Construídas as tabelas devemos criar as
    colunas.
   As migrations servem para criação
    incremental dos esquemas do banco de
    dados dos modelos
Rails – primeiro C.R.U.D
• Vejamos primeiro a migration gerada:

Nome do arquivo:
  Número de série composto pela data



        20090816190631_create_projects.rb

                                  Tipo   Nome da tabela
Rails – primeiro C.R.U.D
• A migration de projeto está em:



• Código:
• Código do modelo e do helper:




• Estão vazios pois ainda não possuem
  nenhuma regra de negócio!
• As colunas do banco serão injetadas pelo
  ActiveRecord como atributos no modelo
Rails – primeiro C.R.U.D
• Código do controlador
• Método index
Rails – Active Record
• Vejamos alguns métodos que nossos
  modelos herdam de ActiveRecord::Base
• save
• find(id)
• find(:all, :conditions => “”)
   find(:first, :conditions => “”)
   find(:last, :conditions => “”)
   Parâmetros opcionais:
     • :join, :order, :limit, :offset, :select, :readonly, :from,
       :group, :lock ...
Rails – Active Record
• Mais métodos
   update_attributes(hash)
   destroy
   find_by_sql(string)
Rails – Active Record
• Dinamic finders
   find_all_by_name_and_age(name, age)
   find_by_name(name)
   find_by_age(name)
   find_all_by_name_or_middle_name(name,
    middle_name)
   etc
Rails – primeiro C.R.U.D




• Params é um hash do Rails que possui todos os
  atributos do request. :id é o identificador do
  atributo id.
Rails – primeiro C.R.U.D
Rails – primeiro C.R.U.D
Rails
• O flash é um hash que é apagado na
  próxima requisição, por isso ele é muito
  útil em guardar mensagens de sucesso,
  erro, etc.
Rails – primeiro C.R.U.D
Rails – primeiro C.R.U.D
Rails
• O Rails cria um controlador para o modelo com
  URL’s rest, como pode ser observado
• Essas url’s são criadas através de rotas
    map.connect ':controller/:action/:id'
    map.connect ':controller/:action/:id.:format'
• As rotas ficam no arquivo config/routes.rb e são
  associadas aos controladores assim:
              map.resources :projects
• Vejamos como as views, telas, são
  criadas:
                   Neste caso temos um layout
                   Para o nosso controlador
                   projects, mas poderiamos ter
                   apenas um layout para
                   aplicação toda:

                   application.html.erb
Rails – primeiro C.R.U.D
• Projects.html.erb
Rails
• Onde ficam os arquivos css e javascript?



                 A tag stylesheet_link_tag
                 facilita o acesso aos arquivos css



                  Código gerado na execução
                  da aplicação.
Rails – primeiro C.R.U.D
• Index.html.erb




  A tag <% é utilizada para executar algum comando
  ruby e <%= para escapar algum valor. *H é uma
  função de um helper, serve para não escapar o html
Rails
• Rotas (rake routes)




     projects_path listagem
     project para o show (detalhamento)
     new_project_path página de criação
     edit_project_path(project) página de edição
Rails – primeiro C.R.U.D
• New.html.erb e Edit.html.erb
                  O new e o Edit são exatamente iguais,
                  Mudando apenas o nome do botão
                  submit. Suas operações são diferenciadas
                  pelo método HTTP utilizado.

                  Cria um formulário para o objeto informado,
                  gerando a URL dependendo do método
                  HTTP utilizado


                  Apresenta as mensagens de erro,
                  caso existam
Rails – primeiro C.R.U.D
• Nosso modelo ainda não implementa
  nenhuma regra de negócio, vamos
  incrementar:

   Para isso vamos utilizar os métodos
    validates_
   Iremos validar o nome, que deve ser único,
    obrigatório, maior que cinco (5), menor que
    cinqüenta (50) e o responsável é obrigatório
Rails – primeiro C.R.U.D
• Vejamos o novo código do modelo:
Rails – primeiro C.R.U.D
Dúvidas




          ?
Rails – segundo C.R.U.D
• Vamos criar um novo modelo Bug que
  possui um projeto
• Vamos atualizar o nosso modelo projeto,
  para que este possua vários Bug’s
• Vamos relacionar os controladores

        ruby script/generate scaffold bug
        project:belongs_to description:string
Rails – segundo C.R.U.D
• Vamos adicionar uma validação na
  migration criada
Rails – segundo C.R.U.D
• Com as modificações feitas vamos
  atualizar o banco

            rake db:migrate
Rails – segundo C.R.U.D
• Agora vamos relacionar projeto a bug
• Um projeto poderá ter muitos bugs
Rails – segundo C.R.U.D
• Com os modelos relacionados, vamos
  criar rotas relacionadas entre eles
• Para isso vamos editar o arquivo
  config/routes.db




• Removi a rota direta para bug
Rails – segundo C.R.U.D
• Podemos pedir ao rake para nos informar
  todas as rotas possíveis com o comando:
                rake routes
Rails – segundo C.R.U.D
• Vamos adicionar o link de “novo bug” em
  projeto/show.html.erb
Rails – segundo C.R.U.D
• Vamos corrigir bug/new.html.erb para que
  esse realmente aponte para o projeto
Rails – segundo C.R.U.D
• Depois de criado o bug vamos
  redirecionar para página do projeto
Rails – segundo C.R.U.D
• Resultado
 http://localhost:3000/projetos/1
 http://localhost:3000/projetos/1/bugs/new
Rails – segundo C.R.U.D
• Vamos melhorar a apresentação do
  projeto exibindo os bugs, adicione na
  página projeto/show.html.erb
Rails – segundo C.R.U.D
• Resultado
Rails – segundo C.R.U.D
• Pronto! Agora precisamos apenas
  configurar nossa aplicação na página
  principal

• Delete a página public/index.html que é a
  página de apresentação do projeto

• E faça o mapeamento do controlador
  principal no arquivo config/routes.rb
Rails – segundo C.R.U.D
• config/routes.rb
Rails – segundo C.R.U.D
  http://localhost:3000/
Quer aprender mais?




http://www.pragprog.com/
http://www.urubatan.com.br/
Ruby on Rails na prática

     Obrigado
ornelas.tulio@gmail.com
twitter.com/tulios

Contenu connexe

Tendances

APIs do Jeito Certo
APIs do Jeito CertoAPIs do Jeito Certo
APIs do Jeito CertoRavan Scafi
 
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
 
Laravel 5: Entenda o ambiente e a estrutura MVC
 Laravel 5: Entenda o ambiente e a estrutura MVC Laravel 5: Entenda o ambiente e a estrutura MVC
Laravel 5: Entenda o ambiente e a estrutura MVCMichael Douglas
 
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
 
Evitando a fadiga com Laravel Homestead
Evitando a fadiga com Laravel HomesteadEvitando a fadiga com Laravel Homestead
Evitando a fadiga com Laravel HomesteadDanilo Esser
 
Desenvolvimento de sistemas web com php Frameworks - Aula 1
Desenvolvimento de sistemas web com php Frameworks - Aula 1Desenvolvimento de sistemas web com php Frameworks - Aula 1
Desenvolvimento de sistemas web com php Frameworks - Aula 1Thyago Maia
 
A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )Michael Douglas
 
Desenvolvimento de sistemas web com PHP Frameworks - Aula 4
Desenvolvimento de sistemas web com PHP Frameworks - Aula 4Desenvolvimento de sistemas web com PHP Frameworks - Aula 4
Desenvolvimento de sistemas web com PHP Frameworks - Aula 4Thyago Maia
 
Mini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOLMini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOLtarginosilveira
 
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1Thyago Maia
 
Programação Dinâmica para Web - Aula 2
Programação Dinâmica para Web - Aula 2Programação Dinâmica para Web - Aula 2
Programação Dinâmica para Web - Aula 2Thyago Maia
 
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
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSPledsifes
 
Cya grunt.js, hello gulp.js
Cya grunt.js, hello gulp.jsCya grunt.js, hello gulp.js
Cya grunt.js, hello gulp.jsMichael Douglas
 
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JSRodrigo Urubatan
 

Tendances (20)

APIs do Jeito Certo
APIs do Jeito CertoAPIs do Jeito Certo
APIs do Jeito Certo
 
Introducao ao desenvolvimento web com Rails
Introducao ao desenvolvimento web com RailsIntroducao ao desenvolvimento web com Rails
Introducao ao desenvolvimento web com Rails
 
Laravel 5: Entenda o ambiente e a estrutura MVC
 Laravel 5: Entenda o ambiente e a estrutura MVC Laravel 5: Entenda o ambiente e a estrutura MVC
Laravel 5: Entenda o ambiente e a estrutura MVC
 
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
 
Evitando a fadiga com Laravel Homestead
Evitando a fadiga com Laravel HomesteadEvitando a fadiga com Laravel Homestead
Evitando a fadiga com Laravel Homestead
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
 
Aula Ruby
Aula RubyAula Ruby
Aula Ruby
 
Desenvolvimento de sistemas web com php Frameworks - Aula 1
Desenvolvimento de sistemas web com php Frameworks - Aula 1Desenvolvimento de sistemas web com php Frameworks - Aula 1
Desenvolvimento de sistemas web com php Frameworks - Aula 1
 
A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )
 
Desenvolvimento de sistemas web com PHP Frameworks - Aula 4
Desenvolvimento de sistemas web com PHP Frameworks - Aula 4Desenvolvimento de sistemas web com PHP Frameworks - Aula 4
Desenvolvimento de sistemas web com PHP Frameworks - Aula 4
 
Mini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOLMini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOL
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
 
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
 
Programação Dinâmica para Web - Aula 2
Programação Dinâmica para Web - Aula 2Programação Dinâmica para Web - Aula 2
Programação Dinâmica para Web - Aula 2
 
Servlets e jsp
Servlets e jspServlets e jsp
Servlets e jsp
 
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
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSP
 
Cya grunt.js, hello gulp.js
Cya grunt.js, hello gulp.jsCya grunt.js, hello gulp.js
Cya grunt.js, hello gulp.js
 
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
 

En vedette

Desenvolvimento Ágil com Rails GURUSC 2011
Desenvolvimento Ágil com Rails GURUSC 2011Desenvolvimento Ágil com Rails GURUSC 2011
Desenvolvimento Ágil com Rails GURUSC 2011Andre Bernardes
 
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
 
Mini-curso RoR - Apresentação
Mini-curso RoR - ApresentaçãoMini-curso RoR - Apresentação
Mini-curso RoR - ApresentaçãoAgence Educacional
 
[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
 
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
 
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
 
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 ...
 
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
 
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
 
Rest API's with Ruby on Rails
Rest API's with Ruby on RailsRest API's with Ruby on Rails
Rest API's with Ruby on RailsRicardo Silva
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + PythonMateus Padua
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.comricobl
 

En vedette (20)

Mini-curso RoR - Aula 01
Mini-curso RoR - Aula 01Mini-curso RoR - Aula 01
Mini-curso RoR - Aula 01
 
Desenvolvimento Ágil com Rails GURUSC 2011
Desenvolvimento Ágil com Rails GURUSC 2011Desenvolvimento Ágil com Rails GURUSC 2011
Desenvolvimento Ágil com Rails GURUSC 2011
 
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
 
Mini-curso RoR - Apresentação
Mini-curso RoR - ApresentaçãoMini-curso RoR - Apresentação
Mini-curso RoR - Apresentação
 
[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
 
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
 
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
 
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
 
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
 
Segurança em Rails
Segurança em RailsSegurança em Rails
Segurança em Rails
 
Apresentação ruby + rails 2014
Apresentação ruby + rails 2014Apresentação ruby + rails 2014
Apresentação ruby + rails 2014
 
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
 
Conhecendo o Django
Conhecendo o DjangoConhecendo o Django
Conhecendo o Django
 
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
 
Ruby Beyond Rails
Ruby Beyond RailsRuby Beyond Rails
Ruby Beyond Rails
 
Rest API's with Ruby on Rails
Rest API's with Ruby on RailsRest API's with Ruby on Rails
Rest API's with Ruby on Rails
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + Python
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.com
 

Similaire à Rails na pratica

Similaire à Rails na pratica (20)

Ruby on Rails
Ruby on RailsRuby on Rails
Ruby on Rails
 
Rails
RailsRails
Rails
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 
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
 
Mini curso rails 3
Mini curso rails 3Mini curso rails 3
Mini curso rails 3
 
Palestra ror edted
Palestra ror edtedPalestra ror edted
Palestra ror edted
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on rails
 
Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0
 
RoR na prática
RoR na práticaRoR na prática
RoR na prática
 
Ruby e Rails
Ruby e RailsRuby e Rails
Ruby e Rails
 
Quick introduction to Ruby on Rails
Quick introduction to Ruby on RailsQuick introduction to Ruby on Rails
Quick introduction to Ruby on Rails
 
Ruby and Rails intro
Ruby and Rails introRuby and Rails intro
Ruby and Rails intro
 
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeça
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeçaTrês anos de Scala em Produção: desafios, aprendizados e dores de cabeça
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeça
 
Rails - EXATEC2009
Rails - EXATEC2009Rails - EXATEC2009
Rails - EXATEC2009
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.
 
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
 
ruby on rails e o mercado
ruby on rails e o mercadoruby on rails e o mercado
ruby on rails e o mercado
 
Rails 03
Rails 03Rails 03
Rails 03
 
Ruby on Rails - Filosofia e Prática
Ruby on Rails - Filosofia e PráticaRuby on Rails - Filosofia e Prática
Ruby on Rails - Filosofia e Prática
 

Rails na pratica

  • 1. Ruby on Rails na prática Túlio Ornelas
  • 2.
  • 3. Agenda • Ruby • Rails • Instalando o Rails • Criando um projeto • Criando primeiro C.R.U.D • Validando C.R.U.D • Segundo C.R.U.D
  • 4. Um pouco sobre Ruby • Criada em 1993 por Yukihiro Matz • Linguagem interpretada • Tipagem dinâmica • Fortemente tipada • Orientada a objetos • Livre • http://www.ruby-lang.org/
  • 5. Um pouco sobre Ruby • Instalando  Linux: sudo apt-get install ruby  Windows: One-click-installer • http://www.ruby-lang.org/pt/downloads/  Mac OS/X: port install ruby • Testando a instalação  ruby -v  Irb -v
  • 6. Um pouco sobre Ruby • Interpretando um arquivo • Interpretando diretamente um comando
  • 7. Um pouco sobre Ruby • Em Ruby tudo é OO
  • 8. Um pouco sobre Ruby • Criando uma classe  Em Ruby:  Em Java:
  • 9. Um pouco sobre Ruby • Criando um objeto:  Ruby:  Java: Note a sintaxe simplificada! Não é necessário declarar, a variável é criada quando utilizada.
  • 10. Um pouco sobre Ruby • Criando uma classe com método e construtor:  Ruby Java
  • 11. Um pouco sobre Ruby • Variáveis:  Local:  De instância:  De classe: Variáveis de classe são comparadas a atributos estáticos (static) em java.
  • 12. Um pouco sobre Ruby • Métodos  De instância:  Da classe:  Privados e Protegidos:
  • 13. Um pouco sobre Ruby • Criando métodos de acesso as variáveis • attr_accessor e attr_reader são métodos que geram os métodos get/set dinamicamente
  • 14. Um pouco sobre Ruby • Reestruturando nossa classe User
  • 15. Um pouco sobre Ruby • Herança
  • 16. Um pouco sobre Ruby • Testando a herança
  • 17. Um pouco sobre Ruby • Booleans  As únicas coisas falsas em Ruby são nil e false
  • 19. Um pouco sobre Ruby • LAB  Dado um número imprimir todos os ímpares até ele
  • 20. Um pouco sobre Ruby • Solução
  • 22. O que é o Rails? • Meta-Framework MVC • Desenvolvido em linguagem Ruby
  • 23. Rails • Lançado em julho de 2004 • Solução completa, produtiva com baixa curva de aprendizagem • Conceitos:  DRY (Don’t Repeat yourself)  Convention of configuration
  • 24. Rails - composição • O Rails é a junção de 5 frameworks, são eles:  Active Record (ORM)  Action Pack (MVC)  Action Mailer  Action Support  Action WebServices
  • 25. Rails - instalando • O Rails é uma rubygem, por isso precisamos do gem corretamente instalado. • Uma “gem” é código ruby empacotado. Pode ser comparado ao .jar em Java. • Rubygems é instalado junto com o ruby, caso contrário: sudo apt-get install rubygems
  • 26. Rails - instalando • Dependências:  libsqlite3-dev  ruby1.8-dev • Abra o console e digite: gem install sqlite3-ruby (driver) gem install rails *Confirme a instalação das dependências quando solicitado.
  • 27. Rails - instalando • Verificando a instalação
  • 28. Rails – criando o projeto • Para criar um projeto utilize o comando:  Rails <nome do projeto> • Por exemplo:  Rails bug_tracking • Dessa forma o rails Irá gerar o arcabouço de um projeto MVC
  • 29. Rails – criando o projeto • Vamos criar o projeto bug_tracking
  • 30. Rails – criando o projeto • Vamos subir o servidor com ruby script/server e entrar na URL http://localhost:3000
  • 31. Rails – criando o projeto • Note que nosso projeto não tem nada. Vejamos as configurações do nosso ambiente:
  • 32. Rails – o projeto • Analisaremos apenas o diretório app por enquanto • Controllers => Diretório com os controladores da aplicação • Models => Os modelos do seu domínio • Views => As telas • Helpers => Classes de ajuda (conversão, etc)
  • 33. Rails • Scripts padrões do Rails, vejamos dois:  Generate => Cria uma estrutura básica para um modelo.  Server => Inicia o servidor da aplicação. • Modo de usar:  Ruby script/generate <parâmetros>  Ruby script/server
  • 34. Rails • Antes de continuar o desenvolvimento devemos conhecer o rake  Um utilitário Ruby semelhante ao make do C/C++, ou Ant no Java.  Exemplo: • Rake db:create:all
  • 35. Rails • Configuração do banco em config/database.yml O banco padrão do Rails é o SQLite3 que é um banco de dados embarcado São criados 3 contextos: desenvolvimento, teste e produção
  • 36. Rails – primeiro C.R.U.D • Vamos utilizar o gerador scaffold (andaime) que é um gerador de c.r.u.d ruby script/generate scaffold project name:string description:string owner:string • Note que os atributos do seu modelo são passados para o script, e ele irá gerar uma migrate correspondente.
  • 37. Rails – primeiro C.R.U.D • Saída do scaffold: Migrations (migrações) são um forma de evoluir o schema do banco de dados
  • 38. Rails – primeiro C.R.U.D • Antes de analisarmos o ocorrido, vamos terminar a criação do nosso modelo. • Execute os comandos: Rake db:create:all O comando db:migrate irá aplicar as migrations que ainda não foram Rake db:migrate aplicadas.
  • 39. Rails – primeiro C.R.U.D • Saída do db:migrate
  • 40. Rails – primeiro C.R.U.D • Acesse a URL http://localhost:3000/projects
  • 41. Rails – primeiro C.R.U.D • Vamos analisar os comandos do rake utilizados: Rake db:create:all  Esse comando utiliza o rake para criar as tabelas para todos os modelos ainda não criados
  • 42. Rails – primeiro C.R.U.D Rake db:migrate  Construídas as tabelas devemos criar as colunas.  As migrations servem para criação incremental dos esquemas do banco de dados dos modelos
  • 43. Rails – primeiro C.R.U.D • Vejamos primeiro a migration gerada: Nome do arquivo: Número de série composto pela data 20090816190631_create_projects.rb Tipo Nome da tabela
  • 44. Rails – primeiro C.R.U.D • A migration de projeto está em: • Código:
  • 45. • Código do modelo e do helper: • Estão vazios pois ainda não possuem nenhuma regra de negócio! • As colunas do banco serão injetadas pelo ActiveRecord como atributos no modelo
  • 46. Rails – primeiro C.R.U.D • Código do controlador • Método index
  • 47. Rails – Active Record • Vejamos alguns métodos que nossos modelos herdam de ActiveRecord::Base • save • find(id) • find(:all, :conditions => “”)  find(:first, :conditions => “”)  find(:last, :conditions => “”)  Parâmetros opcionais: • :join, :order, :limit, :offset, :select, :readonly, :from, :group, :lock ...
  • 48. Rails – Active Record • Mais métodos  update_attributes(hash)  destroy  find_by_sql(string)
  • 49. Rails – Active Record • Dinamic finders  find_all_by_name_and_age(name, age)  find_by_name(name)  find_by_age(name)  find_all_by_name_or_middle_name(name, middle_name)  etc
  • 50. Rails – primeiro C.R.U.D • Params é um hash do Rails que possui todos os atributos do request. :id é o identificador do atributo id.
  • 53. Rails • O flash é um hash que é apagado na próxima requisição, por isso ele é muito útil em guardar mensagens de sucesso, erro, etc.
  • 56. Rails • O Rails cria um controlador para o modelo com URL’s rest, como pode ser observado • Essas url’s são criadas através de rotas map.connect ':controller/:action/:id' map.connect ':controller/:action/:id.:format' • As rotas ficam no arquivo config/routes.rb e são associadas aos controladores assim: map.resources :projects
  • 57. • Vejamos como as views, telas, são criadas: Neste caso temos um layout Para o nosso controlador projects, mas poderiamos ter apenas um layout para aplicação toda: application.html.erb
  • 58. Rails – primeiro C.R.U.D • Projects.html.erb
  • 59. Rails • Onde ficam os arquivos css e javascript? A tag stylesheet_link_tag facilita o acesso aos arquivos css Código gerado na execução da aplicação.
  • 60. Rails – primeiro C.R.U.D • Index.html.erb A tag <% é utilizada para executar algum comando ruby e <%= para escapar algum valor. *H é uma função de um helper, serve para não escapar o html
  • 61. Rails • Rotas (rake routes)  projects_path listagem  project para o show (detalhamento)  new_project_path página de criação  edit_project_path(project) página de edição
  • 62. Rails – primeiro C.R.U.D • New.html.erb e Edit.html.erb O new e o Edit são exatamente iguais, Mudando apenas o nome do botão submit. Suas operações são diferenciadas pelo método HTTP utilizado. Cria um formulário para o objeto informado, gerando a URL dependendo do método HTTP utilizado Apresenta as mensagens de erro, caso existam
  • 63. Rails – primeiro C.R.U.D • Nosso modelo ainda não implementa nenhuma regra de negócio, vamos incrementar:  Para isso vamos utilizar os métodos validates_  Iremos validar o nome, que deve ser único, obrigatório, maior que cinco (5), menor que cinqüenta (50) e o responsável é obrigatório
  • 64. Rails – primeiro C.R.U.D • Vejamos o novo código do modelo:
  • 66. Dúvidas ?
  • 67. Rails – segundo C.R.U.D • Vamos criar um novo modelo Bug que possui um projeto • Vamos atualizar o nosso modelo projeto, para que este possua vários Bug’s • Vamos relacionar os controladores ruby script/generate scaffold bug project:belongs_to description:string
  • 68. Rails – segundo C.R.U.D • Vamos adicionar uma validação na migration criada
  • 69. Rails – segundo C.R.U.D • Com as modificações feitas vamos atualizar o banco rake db:migrate
  • 70. Rails – segundo C.R.U.D • Agora vamos relacionar projeto a bug • Um projeto poderá ter muitos bugs
  • 71. Rails – segundo C.R.U.D • Com os modelos relacionados, vamos criar rotas relacionadas entre eles • Para isso vamos editar o arquivo config/routes.db • Removi a rota direta para bug
  • 72. Rails – segundo C.R.U.D • Podemos pedir ao rake para nos informar todas as rotas possíveis com o comando: rake routes
  • 73. Rails – segundo C.R.U.D • Vamos adicionar o link de “novo bug” em projeto/show.html.erb
  • 74. Rails – segundo C.R.U.D • Vamos corrigir bug/new.html.erb para que esse realmente aponte para o projeto
  • 75. Rails – segundo C.R.U.D • Depois de criado o bug vamos redirecionar para página do projeto
  • 76. Rails – segundo C.R.U.D • Resultado http://localhost:3000/projetos/1 http://localhost:3000/projetos/1/bugs/new
  • 77. Rails – segundo C.R.U.D • Vamos melhorar a apresentação do projeto exibindo os bugs, adicione na página projeto/show.html.erb
  • 78. Rails – segundo C.R.U.D • Resultado
  • 79. Rails – segundo C.R.U.D • Pronto! Agora precisamos apenas configurar nossa aplicação na página principal • Delete a página public/index.html que é a página de apresentação do projeto • E faça o mapeamento do controlador principal no arquivo config/routes.rb
  • 80. Rails – segundo C.R.U.D • config/routes.rb
  • 81. Rails – segundo C.R.U.D http://localhost:3000/
  • 83. Ruby on Rails na prática Obrigado ornelas.tulio@gmail.com twitter.com/tulios