Desenvolvimento web ágil e descomplicado usando

RUBY ON RAILS
Quem?

 Maurício Linhares
   Desenvolvedor da CodeVader
   JUG Leader do PBJUG
   Instrutor da LinuxFi
Problemas?

 Desenvolvimento web é:
   Complicado;
   Lento;
   Caro;
   Cheio de tecnologias diferentes e que não se
    falam;
Pra descomplicar, surgem
frameworks
 Java
   Struts
   Spring MVC
   JSF
 PHP
   CodeIgniter
   PRADO
 C#
   ASP.NET
Mas surgem novas
complicações...
 Arquivos XML pra configurar tudo;


 Nem só de frameworks web vive o mundo:
   Persistência?
   Web services?


 Como estender um framework para criar
  novas funcionalidades?
O que é isso?

 Framework web escrito na linguagem Ruby;


 Desenvolvido originalmente por David
  Heinemeyer Hanson, como um “framework
  caseiro” para os projetos da 37signals.com;

 Liberado originalmente como open source
  em julho de 2004;
Por que Rails é diferente?
Porque é Ruby

 É uma linguagem de tipagem dinâmica;


 Puramente orientada a objetos;


 Desenvolvida com foco no programador, não
  na ferramenta;
3.times do
 puts "Hello!"
end

puts -175.abs
for ( int x = 0; x < 3; x++ ){
  System.out.println( “Hello” )
}
list = [ "I", "am", "a", "list" ]
puts list.join(" ")
list.each do |item|
  puts item
end
hash = { :water => 'wet',
                 :fire => 'hot' }
puts hash[:fire]

hash.each_pair do |key, value|
  puts "#{key} is #{value}"
end

hash.delete :water
hash.delete_if do |key,value|
  value=='hot'
end
Princípios

 Linguagens de programação devem ser fáceis
  para as pessoas, não para as máquinas;

 Você não deve ser surpreendido por novos
  comportamentos ou efeitos colaterais
  inesperados;

 Código deve ser claro e fácil de ser lido,
  métodos/mensagens devem ser claros na sua
  intenção;
Voltando ao Rails...
                       Use Rails ou
                       você vai se
                       arrepender!
Muitas siglas

 DRY – Don`t RepeatYourself


 KISS – Keep It Simple, Stupid


 CoC – Convention Over Configuration
O MVC do Rails

                ActionPack




   ActionView                ActiveRecord
ActiveRecord

 Model
   Representa os objetos do modelo que estão ou
    vão ser gravados no banco de dados relacional;
   É uma ferramenta de mapeamento objeto-
    relacional (como o Hibernate) , que visa facilitar o
    acesso a bancos de dados;
ActionPack

 Controller
   Faz o papel que Servlets fariam em Java, recebe
    uma requisição da web e se comunica com o
    modelo para executar a lógica e depois repassar
    para a visualização;
ActionView

 View
   Controla a visualização de conteúdo nas páginas;


   Contém complementos que facilitam a criação de
    formulários e simplificam a geração de HTML;

   Traz um “gerador” de JavaScript que facilita o uso
    de Ajax na aplicação;
Outros pedaços

 ActiveResource
   Para acesso a serviços REST (web services)
    disponíveis;


 ActionMailer
   Envio e recebimento de e-mails dentro da
    aplicação, diretamente integrado ao ActionView;
Eu quero
  ver o
 código!
Será que ele é pra mim?

 Aplicação web?
   Check!
 Ambiente Linux/Unix?
   Check!
 Equipe de desenvolvimento interessada em
  novidades?
   Check!
 Conciência de que isso não vai salvar o
  mundo?
   Check!
Rails não é a única opção

 Python
   Django
 PHP
   CakePHP
 Perl
   Catalyst
 Java
   Não cabem aqui nesse slide;
 C#
   Bem... Erh... Deixa pra lá;
Quando eu não devo usar
Rails?
 Quando a equipe não está convencida;


 Quando você não tem (ou não está disposto a
  ter) uma forte cultura de testes nos projetos;

 Quando o débito técnico for muito alto e
  você não tiver condições de parar tudo e
  colocar ele em um nível aceitável;
Rails não é o Santo Graal

 As técnicas que fazem Rails especial já se
  espalharam pelas outras comunidades;

 Hoje ele não é mais revolucionário como foi a
  cinco anos atrás;

 Mão de obra especializada ainda não dá em
  árvore;
Sim, e não tem mais
vantagens?
 Plugins, plugins e plugins. Milhares deles. Dá pra
  se afogar em tanta coisa diferente;

 guides.rubyonrails.org


 Vários livros e material pronto publicados;


 Em constante evolução, com versões saindo com
  novas funcionalidades em menos de 6 meses;
 Agile Web Development With Rails – 3rd
  Edition
Ruby vs Java!
Mas a verdade é triste...
Dúvidas?

Desenvolvimento web ágil e descomplicado usando ruby on rails

  • 1.
    Desenvolvimento web ágile descomplicado usando RUBY ON RAILS
  • 2.
    Quem?  Maurício Linhares  Desenvolvedor da CodeVader  JUG Leader do PBJUG  Instrutor da LinuxFi
  • 3.
    Problemas?  Desenvolvimento webé:  Complicado;  Lento;  Caro;  Cheio de tecnologias diferentes e que não se falam;
  • 4.
    Pra descomplicar, surgem frameworks Java  Struts  Spring MVC  JSF  PHP  CodeIgniter  PRADO  C#  ASP.NET
  • 5.
    Mas surgem novas complicações... Arquivos XML pra configurar tudo;  Nem só de frameworks web vive o mundo:  Persistência?  Web services?  Como estender um framework para criar novas funcionalidades?
  • 7.
    O que éisso?  Framework web escrito na linguagem Ruby;  Desenvolvido originalmente por David Heinemeyer Hanson, como um “framework caseiro” para os projetos da 37signals.com;  Liberado originalmente como open source em julho de 2004;
  • 8.
    Por que Railsé diferente?
  • 9.
    Porque é Ruby É uma linguagem de tipagem dinâmica;  Puramente orientada a objetos;  Desenvolvida com foco no programador, não na ferramenta;
  • 10.
    3.times do puts"Hello!" end puts -175.abs
  • 11.
    for ( intx = 0; x < 3; x++ ){ System.out.println( “Hello” ) }
  • 12.
    list = ["I", "am", "a", "list" ] puts list.join(" ") list.each do |item| puts item end
  • 13.
    hash = {:water => 'wet', :fire => 'hot' } puts hash[:fire] hash.each_pair do |key, value| puts "#{key} is #{value}" end hash.delete :water hash.delete_if do |key,value| value=='hot' end
  • 14.
    Princípios  Linguagens deprogramação devem ser fáceis para as pessoas, não para as máquinas;  Você não deve ser surpreendido por novos comportamentos ou efeitos colaterais inesperados;  Código deve ser claro e fácil de ser lido, métodos/mensagens devem ser claros na sua intenção;
  • 15.
    Voltando ao Rails... Use Rails ou você vai se arrepender!
  • 16.
    Muitas siglas  DRY– Don`t RepeatYourself  KISS – Keep It Simple, Stupid  CoC – Convention Over Configuration
  • 17.
    O MVC doRails ActionPack ActionView ActiveRecord
  • 18.
    ActiveRecord  Model  Representa os objetos do modelo que estão ou vão ser gravados no banco de dados relacional;  É uma ferramenta de mapeamento objeto- relacional (como o Hibernate) , que visa facilitar o acesso a bancos de dados;
  • 19.
    ActionPack  Controller  Faz o papel que Servlets fariam em Java, recebe uma requisição da web e se comunica com o modelo para executar a lógica e depois repassar para a visualização;
  • 20.
    ActionView  View  Controla a visualização de conteúdo nas páginas;  Contém complementos que facilitam a criação de formulários e simplificam a geração de HTML;  Traz um “gerador” de JavaScript que facilita o uso de Ajax na aplicação;
  • 21.
    Outros pedaços  ActiveResource  Para acesso a serviços REST (web services) disponíveis;  ActionMailer  Envio e recebimento de e-mails dentro da aplicação, diretamente integrado ao ActionView;
  • 22.
    Eu quero ver o código!
  • 23.
    Será que eleé pra mim?  Aplicação web?  Check!  Ambiente Linux/Unix?  Check!  Equipe de desenvolvimento interessada em novidades?  Check!  Conciência de que isso não vai salvar o mundo?  Check!
  • 24.
    Rails não éa única opção  Python  Django  PHP  CakePHP  Perl  Catalyst  Java  Não cabem aqui nesse slide;  C#  Bem... Erh... Deixa pra lá;
  • 25.
    Quando eu nãodevo usar Rails?  Quando a equipe não está convencida;  Quando você não tem (ou não está disposto a ter) uma forte cultura de testes nos projetos;  Quando o débito técnico for muito alto e você não tiver condições de parar tudo e colocar ele em um nível aceitável;
  • 26.
    Rails não éo Santo Graal  As técnicas que fazem Rails especial já se espalharam pelas outras comunidades;  Hoje ele não é mais revolucionário como foi a cinco anos atrás;  Mão de obra especializada ainda não dá em árvore;
  • 27.
    Sim, e nãotem mais vantagens?  Plugins, plugins e plugins. Milhares deles. Dá pra se afogar em tanta coisa diferente;  guides.rubyonrails.org  Vários livros e material pronto publicados;  Em constante evolução, com versões saindo com novas funcionalidades em menos de 6 meses;
  • 28.
     Agile WebDevelopment With Rails – 3rd Edition
  • 29.
  • 30.
    Mas a verdadeé triste...
  • 31.