SlideShare uma empresa Scribd logo
1 de 75
Baixar para ler offline
Desenvolvimento Ágil para Web
     com Ruby on Rails
Ruby




                 Release público em 1995




Ruby is designed to make programmers happy
PragDave




2000 – Ocidente
Ruby
●   Melhor amigo do desenvolvedor
●   Legível e Humana
●   Perl, Smalltalk, Ada e LISP
●   Orientada a Objetos
●   Extremamente Flexível
Características do Ruby
●   A sintaxe é enxuta
●   Tudo é objeto
●   Geração de código em tempo real
●   Fortemente Tipada
●   Tipagem dinâmica
●   Closures Reais
Características do Ruby
●   Classes abertas
●   Garbage Collector
●   Multi-plataforma
●   Herança Simples
Vantagens
●   Memoria controlada automaticamente
●   Linguagem humana
●   Simplicidade
●   Tipagem Dinâmica
●   Extensibilidade
●   simbolos
Desvantagens
●   Maquina Virtual Lenta (1.8)
●   Matemática Intensa – Estatísticas e fins cientificos
●   Threading – Green Threading/ melhora no ruby 1.9 (jruby)
Instalando Ruby
●   Ubuntu - sudo apt-get install ruby irb
●   Windows - http://rubyforge.org/projects/rubyinstaller/
●   easyrails
Escopo Variáveis
●   thiago – variavel local
●   @thiago – variavel de instancia
●   @@thiago – variavel de classe
●   $thiago – variavel global
Classes em Ruby


class Personagem

 def initialize(tipo, nome)
  @tipo = tipo
  @nome = nome
 end

end
Classes em Ruby

thiago = Personagem.new(:ator, "Thiago Cifani")

marano = Personagem.new(:revisor, "Thiago
Marano")
Classes em Ruby

def to_s
 "#{@nome} é um #{@tipo}"
end
Classes em Ruby
def nome
 @nome
end

def tipo
 @tipo
end

def nome=(value)
  @nome = value
end

def tipo=(value)
 @tipo = value
end
Classes em Ruby




attr_accessor :nome, :tipo
Controle de Acesso
class Test               class Test
public                    def method1
 def method1
                          end
 end
                          def method2
 protected                end
 def method2              def method3
 end                      end

  private
                          public :method1
 def method3
end                       protected :method2
                          private :method2
end                      end
Herança Simples




   class B < A
   end
Livros OpenSource
●   http://aprendaaprogramar.rubyonrails.pro.br/
●   http://why.nomedojogo.com/
try {
        BufferedReader in = new BufferedReader(new
FileReader("nome do arquivo"));
            String str;
            while (in.ready()) {
                str = in.readLine();
                process(str);
            }
            in.close();
    } catch (IOException e) {
    }




  teste = File.readlines("/home/thiagocifani/Documentos/txt.txt")
  puts teste
DEMO
DHH 2004
BaseCamp
Rails: o que é ?



  Framework baseado em Ruby que facilita o
desenvolvimento web, fazendo-o com agilidade e
                produtividade
“Eles servem mais de 23 milhões de visitantes por mês. A conversão resultou
em 20 mil linhas de Ruby ao invés de 120 mil linhas de Java, e mais importante,
Facilitou a dificuldade que tinham com manutenção. Eles também finalizaram a
escrita do programa com apenas 3 meses com 4 desenvolvedores. Uma vez
completo e otimizado o site deles é mais rapido do que antes.”
Rails instalação
●   Sudo apt-get install rubygems
●   Sudo gem update –system
●   Sudo gem install rails
Rails - Filosofia


●   Convention over Configuration
●   DRY - Don't repeat yourself
●   KISS – Keep it simple stupid
●   Diversão
Convention over Configuration
●   Grande parte do desenvolvimento segue
    padrões de convenção.
●   Ex.: Para o model venda, temos uma tabela no
    banco de dados chamada vendas.
●   Resume-se em menos código e menos
    repetição.
Convention over Configuration
●   Nomes de Arquivos
●   Nomes de Tabelas no BD
●   Mapeamentos
●   Chaves do BD
●   Nome das Classes
●   Ambientes
Don't Repeat Yourself
●   Todo código gerado deve ficar apenas em um
    local, não deve haver repetição de código em
    outras áreas da aplicação.
●   Ex.: Active Record – Não é necessário colocar
    os códigos de CRUD no modelo, nome das
    colunas, etc.
Don't Repeat Yourself
 development:
   adapter: sqlite3
   database: db/development.sqlite3
   pool: 5
   timeout: 5000
 test:
   adapter: sqlite3
   database: db/test.sqlite3
   pool: 5
   timeout: 5000

 production:
  adapter: sqlite3
  database: db/production.sqlite3
  pool: 5
  timeout: 5000
Don't Repeat Yourself
●   Gems
●   Plugins
●   Generators
●   Templates
●   Partials
Keep it Simple Stupid
●   Simplicidade acima de tudo
●   Refatoração
●   Testes legíveis
●   Código enxuto
Comandos
●   Scaffolding
●   Migrations
●   script/server
●   script/generate model / controller / view
●   rake
MVC
●   Model - Parte da aplicação que faz ligação com
    o banco de dados.
●   View – Interface com o usuário.
●   Controller – Responsável por receber as
    requisições feitas pela aplicação e executar as
    ações necessárias para atender essas
    requisições. É onde definimos a lógica do
    funcionamento da aplicação.
REST

●   Consiste em utilizar os métodos HTTP no lugar
    do nome das ações para rotear a ação correta
    dentro do Controller.
●   Dependendo do método HTTP o Rails
    encaminha automaticamente para a ação
    correspondente dentro do Controller.
REST
●   Solicitações com o método:
    ●   GET são encaminhadas para as ações
        “index” e “show”
    ●   POST são encaminhadas para a ação
        “create”
    ●   PUT são encaminhadas para a ação
        “update”
    ●   DELETE são encaminhadas para a ação
        “destroy”
Rotas
●   Rails não trabalha com URLs bagunçadas e
    sim Rotas.
●   Facilitação na leitura por engines de busca



           http://www.torrentleech.org/details.php?id=188684
Facilidades
●   Logs
●   Ajax
●   Javascript
●   Jquery
●   Prototype e Scriptaculous
●   HTML
●   Testes Automatizados
Facilidades
●   TDD e BDD
●   Cucumber e Rspec
●   XP
Ferramentas Ágeis
●   Github - Repositório
●   Integração contínua – Cruise Control
●   Deployment – Capistrano, Inploy (dcrec1)
Código PHP
<?
  $email = $_POST['email'];
  $opcao = $_POST['opcoes'];

  $db = mysql_connect("localhost","root", "");
  $banco = mysql_select_db("teste",$db);


  if($opcao == "cadastrar"){



      $sql = mysql_query("INSERT INTO email (email) value ('$email')");

  }else{

      $sql = mysql_query("DELETE FROM email where email = '$email'");

  }



?>
DEMO RAILS
Comunidade
Por akitaonrails




                   or
Dizem que rails é pouco usado!
Links
●   http://www.nomedojogo.com/
●   http://akitaonrails.com/
●   http://blog.areacriacoes.com.br/
●   http://guides.rubyonrails.org/
●   http://ruby-doc.org/core/
●   http://aprendaaprogramar.rubyonrails.pro.br/
●
@egenial
@danielvlopes
@AkitaOnRails
  @tapajos
@carlosbrando
@thiagomarano
  @fredmp
OBRIGADO!!
Perguntas?
@thiagocifani
 cifani.thiago@gmail.com
  github.com/thiagocifani
slideshare.net/thiagocifani

Mais conteúdo relacionado

Mais procurados

PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHPPHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHPiMasters
 
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...iMasters
 
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
 
Testes com javascript
Testes com javascriptTestes com javascript
Testes com javascriptLaís Lima
 
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
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panosLaís Lima
 
Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Emerson Macedo
 
Modularização via BPL - Abordagem Prática para DataSnap & Front-end
Modularização via BPL - Abordagem Prática para DataSnap & Front-endModularização via BPL - Abordagem Prática para DataSnap & Front-end
Modularização via BPL - Abordagem Prática para DataSnap & Front-endMario Guedes
 
Oficina groovy grails - infoway
Oficina  groovy grails - infowayOficina  groovy grails - infoway
Oficina groovy grails - infowayLucas Aquiles
 
Criando uma aplicação simples com ruby on rails
Criando uma aplicação simples com ruby on railsCriando uma aplicação simples com ruby on rails
Criando uma aplicação simples com ruby on railsCOTIC-PROEG (UFPA)
 
Nova Infraestrutura JSON: System.JSON na prática
Nova Infraestrutura JSON: System.JSON na prática Nova Infraestrutura JSON: System.JSON na prática
Nova Infraestrutura JSON: System.JSON na prática Mario Guedes
 
Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)Daniel Lopes
 
Filosofia Ruby e Rails (UFOP e Inforuso 2010)
Filosofia Ruby e Rails (UFOP e Inforuso 2010)Filosofia Ruby e Rails (UFOP e Inforuso 2010)
Filosofia Ruby e Rails (UFOP e Inforuso 2010)Daniel Lopes
 
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
 
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
 

Mais procurados (19)

PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHPPHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
 
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
 
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)
 
Curso de Grails
Curso de GrailsCurso de Grails
Curso de Grails
 
Testes com javascript
Testes com javascriptTestes com javascript
Testes com javascript
 
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
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panos
 
Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011
 
Modularização via BPL - Abordagem Prática para DataSnap & Front-end
Modularização via BPL - Abordagem Prática para DataSnap & Front-endModularização via BPL - Abordagem Prática para DataSnap & Front-end
Modularização via BPL - Abordagem Prática para DataSnap & Front-end
 
Oficina groovy grails - infoway
Oficina  groovy grails - infowayOficina  groovy grails - infoway
Oficina groovy grails - infoway
 
Rails na pratica
Rails na praticaRails na pratica
Rails na pratica
 
Criando uma aplicação simples com ruby on rails
Criando uma aplicação simples com ruby on railsCriando uma aplicação simples com ruby on rails
Criando uma aplicação simples com ruby on rails
 
Nova Infraestrutura JSON: System.JSON na prática
Nova Infraestrutura JSON: System.JSON na prática Nova Infraestrutura JSON: System.JSON na prática
Nova Infraestrutura JSON: System.JSON na prática
 
Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)Minicurso Ruby e Rails (RailsMG UNA)
Minicurso Ruby e Rails (RailsMG UNA)
 
Filosofia Ruby e Rails (UFOP e Inforuso 2010)
Filosofia Ruby e Rails (UFOP e Inforuso 2010)Filosofia Ruby e Rails (UFOP e Inforuso 2010)
Filosofia Ruby e Rails (UFOP e Inforuso 2010)
 
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
 
Groovy grails
Groovy grailsGroovy grails
Groovy grails
 
Grails, o que isso quer dizer?
Grails, o que isso quer dizer?Grails, o que isso quer dizer?
Grails, o que isso quer dizer?
 
Ruby e Rails
Ruby e RailsRuby e Rails
Ruby e Rails
 

Semelhante a Palestra Desenvolvimento Ágil para Web com ROR UVA

Iniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando PimentaIniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando Pimentamichel adriano medeiros
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2PrinceGuru MS
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformanceFelipe Ribeiro
 
Docker - minicurso utfpr 2017
Docker -  minicurso utfpr 2017Docker -  minicurso utfpr 2017
Docker - minicurso utfpr 2017Fabio Janiszevski
 
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
 
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
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHPPaulo Dayvson
 
Ruby on Rails - Introdução ao Framework
Ruby on Rails - Introdução ao FrameworkRuby on Rails - Introdução ao Framework
Ruby on Rails - Introdução ao FrameworkGuilherme Carlos
 
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-ptPedro Sousa
 
Uma implementação de suporte a
Uma implementação de suporte a Uma implementação de suporte a
Uma implementação de suporte a Rômulo Jales
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoEduardo Bohrer
 
Testes Automatizados em Ruby on Rails
Testes Automatizados em Ruby on RailsTestes Automatizados em Ruby on Rails
Testes Automatizados em Ruby on RailsThiago Cifani
 
LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04Carlos Santos
 
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
 

Semelhante a Palestra Desenvolvimento Ágil para Web com ROR UVA (20)

Ruby On Rails Regis
Ruby On Rails RegisRuby On Rails Regis
Ruby On Rails Regis
 
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando PimentaIniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta Performance
 
Docker - minicurso utfpr 2017
Docker -  minicurso utfpr 2017Docker -  minicurso utfpr 2017
Docker - minicurso utfpr 2017
 
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
 
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)
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHP
 
Ruby on Rails - Introdução ao Framework
Ruby on Rails - Introdução ao FrameworkRuby on Rails - Introdução ao Framework
Ruby on Rails - Introdução ao Framework
 
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
 
Uma implementação de suporte a
Uma implementação de suporte a Uma implementação de suporte a
Uma implementação de suporte a
 
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
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançado
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
 
Testes Automatizados em Ruby on Rails
Testes Automatizados em Ruby on RailsTestes Automatizados em Ruby on Rails
Testes Automatizados em Ruby on Rails
 
Django
DjangoDjango
Django
 
LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04
 
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
 

Palestra Desenvolvimento Ágil para Web com ROR UVA

  • 1. Desenvolvimento Ágil para Web com Ruby on Rails
  • 2.
  • 3. Ruby Release público em 1995 Ruby is designed to make programmers happy
  • 5. Ruby ● Melhor amigo do desenvolvedor ● Legível e Humana ● Perl, Smalltalk, Ada e LISP ● Orientada a Objetos ● Extremamente Flexível
  • 6. Características do Ruby ● A sintaxe é enxuta ● Tudo é objeto ● Geração de código em tempo real ● Fortemente Tipada ● Tipagem dinâmica ● Closures Reais
  • 7. Características do Ruby ● Classes abertas ● Garbage Collector ● Multi-plataforma ● Herança Simples
  • 8. Vantagens ● Memoria controlada automaticamente ● Linguagem humana ● Simplicidade ● Tipagem Dinâmica ● Extensibilidade ● simbolos
  • 9. Desvantagens ● Maquina Virtual Lenta (1.8) ● Matemática Intensa – Estatísticas e fins cientificos ● Threading – Green Threading/ melhora no ruby 1.9 (jruby)
  • 10.
  • 11. Instalando Ruby ● Ubuntu - sudo apt-get install ruby irb ● Windows - http://rubyforge.org/projects/rubyinstaller/ ● easyrails
  • 12.
  • 13. Escopo Variáveis ● thiago – variavel local ● @thiago – variavel de instancia ● @@thiago – variavel de classe ● $thiago – variavel global
  • 14. Classes em Ruby class Personagem def initialize(tipo, nome) @tipo = tipo @nome = nome end end
  • 15. Classes em Ruby thiago = Personagem.new(:ator, "Thiago Cifani") marano = Personagem.new(:revisor, "Thiago Marano")
  • 16. Classes em Ruby def to_s "#{@nome} é um #{@tipo}" end
  • 17. Classes em Ruby def nome @nome end def tipo @tipo end def nome=(value) @nome = value end def tipo=(value) @tipo = value end
  • 19. Controle de Acesso class Test class Test public def method1 def method1 end end def method2 protected end def method2 def method3 end end private public :method1 def method3 end protected :method2 private :method2 end end
  • 20. Herança Simples class B < A end
  • 21. Livros OpenSource ● http://aprendaaprogramar.rubyonrails.pro.br/ ● http://why.nomedojogo.com/
  • 22. try { BufferedReader in = new BufferedReader(new FileReader("nome do arquivo")); String str; while (in.ready()) { str = in.readLine(); process(str); } in.close(); } catch (IOException e) { } teste = File.readlines("/home/thiagocifani/Documentos/txt.txt") puts teste
  • 23. DEMO
  • 25.
  • 27.
  • 28. Rails: o que é ? Framework baseado em Ruby que facilita o desenvolvimento web, fazendo-o com agilidade e produtividade
  • 29.
  • 30.
  • 31.
  • 32. “Eles servem mais de 23 milhões de visitantes por mês. A conversão resultou em 20 mil linhas de Ruby ao invés de 120 mil linhas de Java, e mais importante, Facilitou a dificuldade que tinham com manutenção. Eles também finalizaram a escrita do programa com apenas 3 meses com 4 desenvolvedores. Uma vez completo e otimizado o site deles é mais rapido do que antes.”
  • 33. Rails instalação ● Sudo apt-get install rubygems ● Sudo gem update –system ● Sudo gem install rails
  • 34. Rails - Filosofia ● Convention over Configuration ● DRY - Don't repeat yourself ● KISS – Keep it simple stupid ● Diversão
  • 35. Convention over Configuration ● Grande parte do desenvolvimento segue padrões de convenção. ● Ex.: Para o model venda, temos uma tabela no banco de dados chamada vendas. ● Resume-se em menos código e menos repetição.
  • 36. Convention over Configuration ● Nomes de Arquivos ● Nomes de Tabelas no BD ● Mapeamentos ● Chaves do BD ● Nome das Classes ● Ambientes
  • 37. Don't Repeat Yourself ● Todo código gerado deve ficar apenas em um local, não deve haver repetição de código em outras áreas da aplicação. ● Ex.: Active Record – Não é necessário colocar os códigos de CRUD no modelo, nome das colunas, etc.
  • 38. Don't Repeat Yourself development: adapter: sqlite3 database: db/development.sqlite3 pool: 5 timeout: 5000 test: adapter: sqlite3 database: db/test.sqlite3 pool: 5 timeout: 5000 production: adapter: sqlite3 database: db/production.sqlite3 pool: 5 timeout: 5000
  • 39. Don't Repeat Yourself ● Gems ● Plugins ● Generators ● Templates ● Partials
  • 40. Keep it Simple Stupid ● Simplicidade acima de tudo ● Refatoração ● Testes legíveis ● Código enxuto
  • 41. Comandos ● Scaffolding ● Migrations ● script/server ● script/generate model / controller / view ● rake
  • 42. MVC ● Model - Parte da aplicação que faz ligação com o banco de dados. ● View – Interface com o usuário. ● Controller – Responsável por receber as requisições feitas pela aplicação e executar as ações necessárias para atender essas requisições. É onde definimos a lógica do funcionamento da aplicação.
  • 43. REST ● Consiste em utilizar os métodos HTTP no lugar do nome das ações para rotear a ação correta dentro do Controller. ● Dependendo do método HTTP o Rails encaminha automaticamente para a ação correspondente dentro do Controller.
  • 44. REST ● Solicitações com o método: ● GET são encaminhadas para as ações “index” e “show” ● POST são encaminhadas para a ação “create” ● PUT são encaminhadas para a ação “update” ● DELETE são encaminhadas para a ação “destroy”
  • 45. Rotas ● Rails não trabalha com URLs bagunçadas e sim Rotas. ● Facilitação na leitura por engines de busca http://www.torrentleech.org/details.php?id=188684
  • 46. Facilidades ● Logs ● Ajax ● Javascript ● Jquery ● Prototype e Scriptaculous ● HTML ● Testes Automatizados
  • 47. Facilidades ● TDD e BDD ● Cucumber e Rspec ● XP
  • 48. Ferramentas Ágeis ● Github - Repositório ● Integração contínua – Cruise Control ● Deployment – Capistrano, Inploy (dcrec1)
  • 49. Código PHP <? $email = $_POST['email']; $opcao = $_POST['opcoes']; $db = mysql_connect("localhost","root", ""); $banco = mysql_select_db("teste",$db); if($opcao == "cadastrar"){ $sql = mysql_query("INSERT INTO email (email) value ('$email')"); }else{ $sql = mysql_query("DELETE FROM email where email = '$email'"); } ?>
  • 50.
  • 51.
  • 52.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62. Dizem que rails é pouco usado!
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71. Links ● http://www.nomedojogo.com/ ● http://akitaonrails.com/ ● http://blog.areacriacoes.com.br/ ● http://guides.rubyonrails.org/ ● http://ruby-doc.org/core/ ● http://aprendaaprogramar.rubyonrails.pro.br/ ●
  • 75. @thiagocifani cifani.thiago@gmail.com github.com/thiagocifani slideshare.net/thiagocifani