Conhecendo Ruby on Rails
Conhecendo Ruby on Rails

                 Jevô
       Paulo César M. Jeveaux
         www.jeveau...
Jevô
                     Jô
• Consultor e Arquiteto Java

• Desenvolvedor Java há 7 anos
                Java há 7 anos

...
Agenda
                   Ad
•   A linguagem Ruby
•   Ruby on Rails
•   O exemplo: Blog
    O exemplo: Blog
•   Scaffold
•...
Ruby
                        Rb
• Linguagem de programação

• Open Source

• Orientada a objetos
                j

• Ling...
Ruby
                      Rb
• Interpretada
  – Fedback imediato no desenvolvimento
  – Perde um pouco em performance
   ...
Script Dinâmico e Interpretado
   S i t Di â i      It      td
• Possibilidade de realizar chamadas ao Sistema 
  Operacio...
Rápida e Fácil
               Rá id Fá il
• Não é necessário declarar variáveis

• Variáveis não tem tipo (não são “tipada...
Com e sem tipagem
          C         ti
• Variáveis não possuem tipagem estática 
  (como em Smalltalk e Python)
  (     ...
Multiencadeada
            M lti    dd
• Multiencadeamento é a implementação de 
  multitarefa dentro de um único processo...
Ruby on Rails
                Rb      R il
• Framework para desenvolvimento de aplicações Web;

• Criado com a linguagem R...
O que é Rails?
                     O     é R il ?
• Framework completo para desenvolvimento de aplicativos 
  Web

• Paco...
Arquitetura Rails
A it t      R il
Começando
                      C      d
• Instalar Ruby 1.8.6
   – www ruby lang org/en/downloads
     www.ruby‐lang.org/...
Começo Fácil
                    C      Fá il
• Windows
  – I t t R il
    Instant Rails
     • wiki.rubyonrails.com/rails...
O exemplo
                      O      l
• Sistema de Blog
  – Baseado no exemplo do blog do screencast de 
    David Hans...
O que o blog terá
             O       bl t á
•   Uma tabela de Posts
•   Uma tabela associada de Comments
•   Uma tela de...
Criando o projeto
            Ci d         jt
• rails <projeto>
  – rails blog
Criando o banco de dados
     Ci d      b     d dd
• Criando o banco de dados no MySQL
  – create d
           database <p...
Ambientes
                   A bi t
• Rails vem preparado para lidar com três 
  ambientes diferentes:
     bi t dif      ...
A aplicação criada
            A li ã        id
• Estrutura de diretórios
Configurando
              C fi      d
• Configuração mínima necessária: Banco de 
  dados!
  dd !
Criando o Controller
          Ci d      C t ll
• script/generate controller <nome>
  – script/generate controller Blog
  ...
Controllers e Actions
             C t ll        A ti
• Todo Controller fica no diretório:
   – /app/controllers/<nome> co...
Criando um Action
           Ci d       A ti
• Uma classe Controller pode ter várias Actions.
   def index
       #ffaca a...
Executando a aplicação
        E    td        li ã
• Execute
  – script/server
          /
     • Irá iniciar o servidor d...
Executando
E    td
Roteamento
               Rt      t
• Como acessar o Controller e Action criados?
  – Roteamento customizável: config/rout...
Roteamento
Rt      t
Executando uma Action
        E    td        A ti
• Seguindo a regra anterior de roteamento
  – http://localhost:3000/blog...
Convenções e comportamento
   C      õ           t    t
• Ao final de toda Action, Rails chamará uma view com 
  o mesmo n...
Criando uma View
           Ci d        Vi
• Criar index.rhtml em /app/views/blog/
   <h3>HelloWorld! (view)</h3>

• Comen...
Criando
C i d uma Vi
          View
Criando
C i d uma Vi
          View
Criando
C i d uma Vi
          View
Criando a entidade Post
       Ci d        tid d P t
• script/generate model <nome>
  – script/generate model Post
       ...
Mantendo sempre a ordem
     Mtd                 d
• Migration
  – Manutenção de tabelas usando Ruby
  – Independente de b...
Rake
                    Rk
• Rake é a ferramenta para execução de tarefas 
  implementadas em Ruby. Rake é o Make para 
 ...
rake migrate
                         kit
• Toda entidade criada com script/generate gera um arquivo de 
  Migration no di...
Mapeando as tabelas
           M     d     tbl
• A classe Post já é capaz de gerenciar os dados da 
  tabela no banco de d...
Mais convenções
                Mi          õ
• Toda entidade é criada no diretório padrão:
   – /app/models/<controller>/...
Anotando os Modelos
           Atd         Mdl
• Plugin de Dave Thomas

• Instalação (via internet):
   – script/plugin in...
Scaffold
                     S ff ld
• Colocar o método scaffold :<model> no controller é 
  suficiente

• Telas CRUD (Cr...
Telas com Scaffold
Tl        S ff ld
Telas com Scaffold
Tl        S ff ld
Telas com Scaffold
Tl        S ff ld
Configurando o Post
         C fi      d    Pt
• Acrecentando uma validação
  – validate_presence_of :title
Testando validação
Ttd        lid ã
Melhorando o Post
           M lh    d    Pt
• Criando novas colunas com Migration
• script/generate migration <atividade>...
Melhorando o Post
M lh    d    Pt
Melhorando o Post
M lh    d    Pt
Criando um novo Post
         Ci d            Pt
• Testando sem reiniciar
• Verifique as novas colunas
Criando um novo Post
         Ci d            Pt
• Testando sem reiniciar
• Verifique as novas colunas
Gerando o Scaffold
           G    d    S ff ld
• script/generate scaffold <model> <controller>
  – script/generate scaffo...
Scaffold gerado!
             S ff ld      d!
• Toda execução que era automática agora está 
  exposta em arquivos que pod...
Arquivos gerados
Ai           d
Arquivos gerados
Ai           d
Arquivos gerados
Ai           d
Criando a entidade Comment
    Ci d        tid d C      t
• Hora de criar a entidade Comment
  – script/generate model Com...
Rake: Organizando novamente
   Rk O       id            t
• Comment pertence a Post através da coluna 
  post_id.
     t i...
Rake: Organizando novamente
Rk O       id            t
Rake: Organizando novamente
Rk O       id            t
Criando as associações
        Ci d            iõ
• Na classe Post
  – has_many :comments


• Na classe Comments
  – belon...
Criando as associações
Ci d            iõ
Criando as associações
Ci d            iõ
Usando as associações
        Ud             iõ
• Criar um formulário de Comment na tela de 
  detalhe de um Post
  d t lh...
Partials
                       P ti l
• “Don’t Repeat Yourself” (DRY)
• Uma das maneiras de separar trechos de código
   ...
Action para Comment
       A ti        C     t
• <% form_for :comment, @comment, :url
  => {:action => 'add comment', :id ...
Action para Comment
A ti        C     t
Resultado final
R lt d fi l
Testes Unitários
              T t U itá i
• Toda nova entidade ganha um arquivo para 
  teste unitário em:
  tt      itá ...
Ambiente de Testes
             A bi t d T t
• Os testes acontecem em banco de dados separado 
  do desenvolvimento
  do d...
Rodando os Testes Unitários
     Rd d       T t U itá i
• Todos os testes unitários
  – rake test:units


• Apenas um test...
Testes Funcionais
               Tt F i         i
• Todo novo controller ganha uma classe de teste em:
   –/
    /app/test...
Testes
                      Tt
• Testes Unitários devem testar todos os aspectos da 
  entidade como associações, validaç...
Ajax
                     Aj
• Rails é o melhor modelo de framework para 
  Ajax
  Aj

• Ajax é codificado em Ruby puro

•...
Adicionando Ajax
              Adi i    d Aj
• Na View
  – Apenas trocar form_for para remote_form_for


• Na Action
  – r...
A arma secreta: RJS
          A           t RJS
• Seguindo as convenções, ao utilizarmos Ajax a 
  action add_comment espe...
Ative e teste o efeito
          Ati     tt       f it
• O ajax é ativado por controller através de seu 
  layout com o mé...
Blog Pronto!
                       Bl P t !
• Mini Blog criado conforme requerimentos iniciais

• Plus: pequeno brinde vi...
Scriptlet!?
                     S i tl t!?
• Rails não utiliza taglibs

• Ruby é simples e expressiva o suficiente para n...
O que não fi
            O      ã fizemos?
                            ?
• Não precisamos recompilar e reinstalar o aplica...
O que não fi
            O      ã fizemos?
                            ?
• Não precisamos usar Javascript para fazer Ajax:...
Próximos passos?
Próximos passos?

                   Rails no Brasil?
                   Rails no Brasil?
Próximos passos?

                   Rails no Brasil?
                   Rails no Brasil?




 Gostei! Quero me aprofundar...
A dificuldade de aprender Java
A difi ld d d         dJ
Martin Fowler on Rails
        M ti F l         R il
• Famoso escritor de livros especializados em 
  arquitetura de siste...
Rails no Brasil: iniciativa Akit O R il
R il     B il i i i ti Akita On Rails
Ruby on Rails no Brasil
Rb      R il     B il
Próximos Passos
                   Pói      P
• Aprender mais!

   – Programming Ruby (livro gratuito!)
   – http://www.ru...
Aprenda mais
                       A    d    i
• Repensando a Web com Rails
   – Primeiro livro de Ruby on Rails em portu...
Quem está por trás do Ruby?
     Q      tá     tá d R b ?
• Ainda hoje, Matz é o responsável por todas as decisões 
  não‐...
Referências
                       Rf ê i
•   www.ruby‐lang.org
•   www.rubyonrails.org
            b      il
•   www.ruby...
Duvídas, Críticas e Sugestões
   D íd C íti          S    tõ
• Para contato:
  – www.jeveaux.com
  – www.portaljava.com
  ...
Upcoming SlideShare
Loading in …5
×

Ruby On Rails

2,441 views

Published on

Published in: Technology
1 Comment
1 Like
Statistics
Notes
  • Cara Muito Bom!!
    Gostei
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
2,441
On SlideShare
0
From Embeds
0
Number of Embeds
18
Actions
Shares
0
Downloads
69
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Ruby On Rails

  1. 1. Conhecendo Ruby on Rails Conhecendo Ruby on Rails Jevô Paulo César M. Jeveaux www.jeveaux.com j
  2. 2. Jevô Jô • Consultor e Arquiteto Java • Desenvolvedor Java há 7 anos Java há 7 anos • Administrador do PortalJava e ESJUG • Palestrante‐Entusiasta‐Evangelista Java e  agora também Rails =)
  3. 3. Agenda Ad • A linguagem Ruby • Ruby on Rails • O exemplo: Blog O exemplo: Blog • Scaffold • Testes • Ajax • Como continuar e saber mais C ti b i
  4. 4. Ruby Rb • Linguagem de programação • Open Source • Orientada a objetos j • Linguagem de scripts dinâmica e interpretada de scripts dinâmica e interpretada • Criada por Yukihiro “matz” Matsumoto em 1993  d kh “ ” e disponibilizada ao público em 1995
  5. 5. Ruby Rb • Interpretada – Fedback imediato no desenvolvimento – Perde um pouco em performance Perde um pouco em performance • Totalmente orientada a objetos –T d é Tudo é um objeto bj t – 5 é uma instância da classe Fixnum – Classes, herança, métodos, closures, etc
  6. 6. Script Dinâmico e Interpretado S i t Di â i It td • Possibilidade de realizar chamadas ao Sistema  Operacional diretamente O i l di t t • Poderosas operações com strings e Expressões  Regulares • Feedback imediato no desenvolvimento Feedback imediato no desenvolvimento
  7. 7. Rápida e Fácil Rá id Fá il • Não é necessário declarar variáveis • Variáveis não tem tipo (não são “tipadas”) Variáveis não tem tipo (não são  tipadas ) • A sintaxe é simples e consistente; • A gestão de memória é automática – Garbage Collector
  8. 8. Com e sem tipagem C ti • Variáveis não possuem tipagem estática  (como em Smalltalk e Python) ( S llt lk P th ) • Dados fortemente tipados – O dado em memória é tipado e checado em  tempo de execução (Runtime) tempo de execução (Runtime)
  9. 9. Multiencadeada M lti dd • Multiencadeamento é a implementação de  multitarefa dentro de um único processo ltit f d t d úi – Execução mais lenta ç – Os recursos são compartilhados em memória e  devem ter o acesso sincronizado d t i id – Várias tarefas executam de forma concorrente – O multiencademento do Ruby é implementado no  próprio interpretador próprio interpretador
  10. 10. Ruby on Rails Rb R il • Framework para desenvolvimento de aplicações Web; • Criado com a linguagem Ruby; • Desenvolvido por David Heinemeier Hansson, da  37signals; • Extraído de um produto real: o Basecamp • De um produto real para um mundo real
  11. 11. O que é Rails? O é R il ? • Framework completo para desenvolvimento de aplicativos  Web • Pacote MVC (Model‐View‐Controller) – Action Pack (Action Controller e Action View) – Active Record • Suporte a envio e recebimento de e‐mails – A ti M il Action Mailer • Suporte a Web Services Suporte a Web Services – Action WebServices
  12. 12. Arquitetura Rails A it t R il
  13. 13. Começando C d • Instalar Ruby 1.8.6 – www ruby lang org/en/downloads www.ruby‐lang.org/en/downloads • Instalar RubyGems – rubyforge.org/frs/?group_id=126 • I t l R il (li h d Instalar Rails (linha de comando) d) – gem install rails • Instalar MySQL (suporta outros bancos) Instalar MySQL (suporta outros bancos) – dev.mysql.com/downloads
  14. 14. Começo Fácil C Fá il • Windows – I t t R il Instant Rails • wiki.rubyonrails.com/rails/pages/InstantRails • Mac e Linux Mac e Linux – FiveRuns RB‐Install • www.fiveruns.com/products/rm/install fi / d t / /i t ll • Linux – sudo apt get install ruby irb rdoc apt-get
  15. 15. O exemplo O l • Sistema de Blog – Baseado no exemplo do blog do screencast de  David Hansson no rubyonrails.org. O exemplo se  chama: “Creating a weblog in 15 minutes” • http://media.rubyonrails.org/video/rails_take2_with_sound.mov p // y g/ /
  16. 16. O que o blog terá O bl t á • Uma tabela de Posts • Uma tabela associada de Comments • Uma tela de listagem de Posts Uma tela de listagem de Posts • Uma tela de criação e edição de Posts ç ç • Uma tela de detalhes do Post • No detalhe do Post veremos e adicionaremos  Comments
  17. 17. Criando o projeto Ci d jt • rails <projeto> – rails blog
  18. 18. Criando o banco de dados Ci d b d dd • Criando o banco de dados no MySQL – create d database <projeto>_<ambiente> b j bi
  19. 19. Ambientes A bi t • Rails vem preparado para lidar com três  ambientes diferentes: bi t dif t – Development (sandbox) – Test (testes unitários funcionais integrados) (testes unitários, funcionais, integrados) – Production (produção)
  20. 20. A aplicação criada A li ã id • Estrutura de diretórios
  21. 21. Configurando C fi d • Configuração mínima necessária: Banco de  dados! dd !
  22. 22. Criando o Controller Ci d C t ll • script/generate controller <nome> – script/generate controller Blog /
  23. 23. Controllers e Actions C t ll A ti • Todo Controller fica no diretório: – /app/controllers/<nome> controller.rb /app/controllers/<nome>_controller.rb • Todo Controller herda a classe ApplicationController Todo Controller herda a classe ApplicationController • Todo aplicativo Rails é criado com uma classe chamada  ApplicationController, que herda de ActionController::Base, e  é base de todos os outros controllers • Todo método de um controller é chamado de Action
  24. 24. Criando um Action Ci d A ti • Uma classe Controller pode ter várias Actions. def index #ffaca alguma coisa l i render => :text “HelloWorld!” end
  25. 25. Executando a aplicação E td li ã • Execute – script/server / • Irá iniciar o servidor de testes padrão, WEBRick na p , porta 3000. • Acesse: http://localhost:3000 Acesse: http://localhost:3000
  26. 26. Executando E td
  27. 27. Roteamento Rt t • Como acessar o Controller e Action criados? – Roteamento customizável: config/routes.rb – http://localhost:3000/:controller/:action/:id
  28. 28. Roteamento Rt t
  29. 29. Executando uma Action E td A ti • Seguindo a regra anterior de roteamento – http://localhost:3000/blog/index – blog = app/controller/blog_controller.rb – index = método index em BlogController
  30. 30. Convenções e comportamento C õ t t • Ao final de toda Action, Rails chamará uma view com  o mesmo nome da Action, no seguinte diretório: o mesmo nome da Action no seguinte diretório: – /app/views/<controller>/<action>.<ext> • A extensão do arquivo pode ser: q p – .rhtml ‐ Embedded Ruby (HTML+Ruby) – .rxml ‐ XML Builder (Ruby puro) ( yp ) – .rjs ‐ Javascript Generator (Ruby puro) • Este fluxo pode ser interrompido com uma chamada  explícita ao método render ou redirect_to
  31. 31. Criando uma View Ci d Vi • Criar index.rhtml em /app/views/blog/ <h3>HelloWorld! (view)</h3> • Comentar a linha com o render no método  index do BlogController • Acesse novamente e comprove Acesse novamente e comprove – http://localhost:3000/blog/index
  32. 32. Criando C i d uma Vi View
  33. 33. Criando C i d uma Vi View
  34. 34. Criando C i d uma Vi View
  35. 35. Criando a entidade Post Ci d tid d P t • script/generate model <nome> – script/generate model Post /
  36. 36. Mantendo sempre a ordem Mtd d • Migration – Manutenção de tabelas usando Ruby – Independente de banco Independente de banco – Também suporta SQL nativo
  37. 37. Rake Rk • Rake é a ferramenta para execução de tarefas  implementadas em Ruby. Rake é o Make para  il td Rb Rk é Mk Rubyy • Primeira tarefa: manutenção das tabelas – rake migrate
  38. 38. rake migrate kit • Toda entidade criada com script/generate gera um arquivo de  Migration no diretório db/migrate Migration no diretório db/migrate • Todo arquivo Migration é numerado: Todo arquivo Migration é numerado: – 001_create_posts.rb • O comando rake migrate executa os arquivos em db/migrate • O gerenciamento do banco de dados é feito totalmente em  Ruby
  39. 39. Mapeando as tabelas M d tbl • A classe Post já é capaz de gerenciar os dados da  tabela no banco de dados tabela no banco de dados – ActiveRecord • Não há necessidade de explicitar o mapeamento das  colunas do banco com atributos da classe • Rails não proíbe nada: se for necessário existe como  mapear uma coluna para outro atributo de nome  mapear uma coluna para outro atributo de nome diferente
  40. 40. Mais convenções Mi õ • Toda entidade é criada no diretório padrão: – /app/models/<controller>/<model>.rb pp • Toda entidade herda diretamente da classe  ActiveRecord::Base • Não é preciso mapear manualmente as colunas da tabela • Convenção: a classe tem o nome no singular (Post), a tabela  tem o nome do plural (posts) p (p ) • Convenção: Surrogate Key, toda tabela tem uma chave Convenção: Surrogate Key, toda tabela tem uma chave  primária chamada “id” que é um número auto‐incrementável
  41. 41. Anotando os Modelos Atd Mdl • Plugin de Dave Thomas • Instalação (via internet): – script/plugin install annotate_models • Utilização (via rake): – rake annotate_models • Lê a tabela do banco de dados e coloca um Lê a tabela do banco de dados e coloca um  cabeçalho como comentário na classe entidade
  42. 42. Scaffold S ff ld • Colocar o método scaffold :<model> no controller é  suficiente • Telas CRUD (Create, Read, Update, Delete) geradas  automaticamente em tempo de execução (runtime) automaticamente em tempo de execução (runtime) • CUIDADO: Rails NÃO é Scaffold • Scaffold é apenas uma pequena funcionalidade para  facilitar prototipação fl
  43. 43. Telas com Scaffold Tl S ff ld
  44. 44. Telas com Scaffold Tl S ff ld
  45. 45. Telas com Scaffold Tl S ff ld
  46. 46. Configurando o Post C fi d Pt • Acrecentando uma validação – validate_presence_of :title
  47. 47. Testando validação Ttd lid ã
  48. 48. Melhorando o Post M lh d Pt • Criando novas colunas com Migration • script/generate migration <atividade> – script/generate migration AdicionarColunasPost pg g
  49. 49. Melhorando o Post M lh d Pt
  50. 50. Melhorando o Post M lh d Pt
  51. 51. Criando um novo Post Ci d Pt • Testando sem reiniciar • Verifique as novas colunas
  52. 52. Criando um novo Post Ci d Pt • Testando sem reiniciar • Verifique as novas colunas
  53. 53. Gerando o Scaffold G d S ff ld • script/generate scaffold <model> <controller> – script/generate scaffold Post Blog
  54. 54. Scaffold gerado! S ff ld d! • Toda execução que era automática agora está  exposta em arquivos que podemos editar  t i d dit como quisermos q • Provado: Rails não se restringe a Scaffold  automático á • Podemos mudar a listagem de Posts por Podemos mudar a listagem de Posts, por  exemplo, em: – /app/views/blog/list.rhtml
  55. 55. Arquivos gerados Ai d
  56. 56. Arquivos gerados Ai d
  57. 57. Arquivos gerados Ai d
  58. 58. Criando a entidade Comment Ci d tid d C t • Hora de criar a entidade Comment – script/generate model Comment / • Lembre‐se: esta entidade será associada a um Lembre se: esta a um  Post
  59. 59. Rake: Organizando novamente Rk O id t • Comment pertence a Post através da coluna  post_id. t id • Convenção de Chave Estrangeira: <classe> id Convenção de Chave Estrangeira: <classe>_id • rake migrate
  60. 60. Rake: Organizando novamente Rk O id t
  61. 61. Rake: Organizando novamente Rk O id t
  62. 62. Criando as associações Ci d iõ • Na classe Post – has_many :comments • Na classe Comments – belongs_to :post
  63. 63. Criando as associações Ci d iõ
  64. 64. Criando as associações Ci d iõ
  65. 65. Usando as associações Ud iõ • Criar um formulário de Comment na tela de  detalhe de um Post d t lh d Pt – /app/views/blog/show.rhtml / pp/ / g/
  66. 66. Partials P ti l • “Don’t Repeat Yourself” (DRY) • Uma das maneiras de separar trechos de código das maneiras de separar de código • Toda partial começa com underline “_” – <%= render :partial => quot;commentquot;, :collection =>  d lquot; quot; ll @post.comments %> • Associação has_many em Post automaticamente fornece um  hash chamado comments (nome da outra entidade no plural)
  67. 67. Action para Comment A ti C t • <% form_for :comment, @comment, :url => {:action => 'add comment', :id => add_comment @post } do |f| %> – Action esperada: add_comment – Passando parâmetros: params[:id] e Passando parâmetros: params[:id] e  params[:comment] – Hash params[:comment] contém todos os  campos do formulário enviado. df lá i id
  68. 68. Action para Comment A ti C t
  69. 69. Resultado final R lt d fi l
  70. 70. Testes Unitários T t U itá i • Toda nova entidade ganha um arquivo para  teste unitário em: tt itá i – /app/test/unit/<entidade>_test.rb / pp/ / / • Devemos seguir Test‐Driven Development: – “Se não vale a pena testar para que estamos Se não vale a pena testar, para que estamos  codificando?”
  71. 71. Ambiente de Testes A bi t d T t • Os testes acontecem em banco de dados separado  do desenvolvimento do desenvolvimento – <projeto>_test • Cada teste roda de maneira isolada: os dados  modificados em um teste não afetam outro teste difi d t t ã ft ttt • Cada teste unitário tem um arquivo de “fixture”,  carga de dados para testes: g p – /app/test/fixture/<tabela>.yml
  72. 72. Rodando os Testes Unitários Rd d T t U itá i • Todos os testes unitários – rake test:units • Apenas um teste unitário: – ruby test/unit/<entidade>_test.rb
  73. 73. Testes Funcionais Tt F i i • Todo novo controller ganha uma classe de teste em: –/ /app/test/functional/<classe>_controller_test.rb /t t/f ti l/< l > t ll t t b • Devemos testar cada action do controller • Métodos como get e post simulam navegação com  um browser um browser • Todos os testes funcionais: – rake test: u ct o a s a e test:functionals • Apenas um testes funcional: – r b test/f nctional/<classe> controller test rb ruby test/functional/<classe>_controller_test.rb
  74. 74. Testes Tt • Testes Unitários devem testar todos os aspectos da  entidade como associações, validações, callbacks, etc entidade como associações validações callbacks etc • Testes Funcionais devem testar todas as actions de  um mesmo controller, todos os fluxos,  um mesmo controller todos os fluxos redirecionamentos, filtros, etc • Testes Integrados servem para avaliar a navegação e  g p gç fluxos entre actions de diferentes controllers.  Funcionam de maneira semelhante a um teste  Funcionam de maneira semelhante a um teste funcional
  75. 75. Ajax Aj • Rails é o melhor modelo de framework para  Ajax Aj • Ajax é codificado em Ruby puro • Integração com as bibliotecas Prototype e  Script.aculo.us
  76. 76. Adicionando Ajax Adi i d Aj • Na View – Apenas trocar form_for para remote_form_for • Na Action – request.xhr? checa se veio chamada via Ajax. Caso  contrário redireciona para a mesma action de  contrário redireciona para a mesma action de antes, que retorna a página toda 
  77. 77. A arma secreta: RJS A t RJS • Seguindo as convenções, ao utilizarmos Ajax a  action add_comment espera encontrar a  ti dd t t pg página: – /app/views/blog/add_comment.rjs
  78. 78. Ative e teste o efeito Ati tt f it • O ajax é ativado por controller através de seu  layout com o método javascript_include_tag l t ét d j iti ld t • Acesse e comprove – http://localhost:3000/blog
  79. 79. Blog Pronto! Bl P t ! • Mini Blog criado conforme requerimentos iniciais • Plus: pequeno brinde via Ajax • Conseguimos criar entidades e tabelas sem mapear campo‐a‐ campo manualmente campo manualmente – deixe o computador trabalhar por nós • Infraestrutura completa de testes unitários, funcionais e  integrados g • Obs: este é um aplicativo de demonstração, muito mais ainda Obs: este é um aplicativo de demonstração, muito mais ainda  pode ser feito !
  80. 80. Scriptlet!? S i tl t!? • Rails não utiliza taglibs • Ruby é simples e expressiva o suficiente para não  y p p p precisar de artifícios • Taglibs são simplificações de lógica • Podemos fazer tudo de maneira simples e flexível Podemos fazer tudo de maneira simples e flexível  sem precisar aprender sintaxes complexas de XML
  81. 81. O que não fi O ã fizemos? ? • Não precisamos recompilar e reinstalar o aplicativo a  cada mudança cada mudança • Nã Não precisamos reiniciar o servidor a cada mudança i iii id d d • Não precisamos mapear cada uma das colunas das  tabelas para as entidades tabelas para as entidades • Nã Não precisamos configurar dezenas de arquivos XML.  i fi d d i XML Basicamente colocamos a senha do banco de dados,  apenas
  82. 82. O que não fi O ã fizemos? ? • Não precisamos usar Javascript para fazer Ajax: a  maior parte pode ser feita com Ruby puro maior parte pode ser feita com Ruby puro • Nã Não sentimos falta de taglibs: expressões Ruby,  i fl d lib õ Rb partials foram simples o suficiente • Não precisamos codificar código‐cola, o framework Não precisamos codificar código cola, o framework  possui “padrões espertos” afinal, todo aplicativo  Web tem a mesma infraestrutura Web tem a mesma infraestrutura
  83. 83. Próximos passos?
  84. 84. Próximos passos? Rails no Brasil? Rails no Brasil?
  85. 85. Próximos passos? Rails no Brasil? Rails no Brasil? Gostei! Quero me aprofundar Gostei! Quero me aprofundar
  86. 86. A dificuldade de aprender Java A difi ld d d dJ
  87. 87. Martin Fowler on Rails M ti F l R il • Famoso escritor de livros especializados em  arquitetura de sistemas arquitetura de sistemas • Reconhecido nome na comunidade Java • Desenvolvendo projetos em Rails • Celebridade do mundo Java apoiando Rails Celebridade do mundo Java apoiando Rails
  88. 88. Rails no Brasil: iniciativa Akit O R il R il B il i i i ti Akita On Rails
  89. 89. Ruby on Rails no Brasil Rb R il B il
  90. 90. Próximos Passos Pói P • Aprender mais! – Programming Ruby (livro gratuito!) – http://www.rubycentral.com/book/intro.html – Agile Web Development With Rails (livro mais famoso de Rails) – http://www.pragmaticprogrammer.com/titles/rails2/ // / / / – Melhores websites sobre Ruby e Rails Melhores websites sobre Ruby e Rails – http://del.icio.us/fabioakita/rubyonrails – Akita On Rails: principal site de Rails do Brasil – http://www.akitaonrails.com
  91. 91. Aprenda mais A d i • Repensando a Web com Rails – Primeiro livro de Ruby on Rails em português no Brasil – Documentação completa do Rails versão 1.1.2 ç p – Cada um dos tópicos desta demonstração em detalhes – Por Fabio Akita (www.akitaonrails.com) • Consultor SAP há 5 anos • Gerente de Projetos PMP • Desenvolvedor Java há 8 anos • Utilizando diversas plataformas de desenvolvimento há 14 anos de desenvolvimento 14 anos – Pela editora Brasport, já disponível!
  92. 92. Quem está por trás do Ruby? Q tá tá d R b ? • Ainda hoje, Matz é o responsável por todas as decisões  não‐consensuais do Ruby. Ou seja, qualquer  divergência quanto à implementação de uma nova  funcionalidade é resolvida pelo “ditador benevolente”.  Apesar desta “dependência”, a comunidade é forte a  A d t “d dê i ” id d é f t ponto de sobreviver “caso o Matz seja atropelado por  um ônibus Existem pessoas que estão tão inteiradas um ônibus”. Existem pessoas que estão tão inteiradas  com o código quanto o próprio Matz. Diferentemente  de outras tecnologias opensource, não existe uma  g p , empresa por trás de suas operações, bancando os  custos. O projeto sobrevive de doações feitas pelos  usuários satisfeitos e por empresas que conseguiram  ái ti f it i aumentar sua produtividade utilizando Ruby. Fonte: ruby‐br.org
  93. 93. Referências Rf ê i • www.ruby‐lang.org • www.rubyonrails.org b il • www.rubyonrails.com.br y • www.ruby‐br.org • Agradecimento especial ao Fabio Akita por  A di i l F bi Aki gentilmente permitir a utilização de diversos slides  de suas palestras: – www akitaonrails com www.akitaonrails.com • Palestra: Entendendo Rails •Pl Palestra: Ruby on Rails no Brasil Rb R il B il
  94. 94. Duvídas, Críticas e Sugestões D íd C íti S tõ • Para contato: – www.jeveaux.com – www.portaljava.com t lj – paulo@jeveaux.com – jeveaux@portaljava.com Obrigado a todos! Obrigado a todos!

×