SlideShare uma empresa Scribd logo
1 de 35
Baixar para ler offline
RUBY ON RAILS
 Uma cultura de boas práticas
O QUE É ?
O QUE É UM FRAMEWORK ?

“Um framework provê uma solução para uma família de
            problemas semelhantes”.

  “Um framework captura a funcionalidade comum a várias
aplicações. As aplicações devem ter algo razoavelmente grande
 em comum: pertencem a um mesmo domínio de problema”.

“São projetados com para facilitar o desenvolvimento de software,
  habilitando designers e programadores a gastarem mais tempo
  determinando as exigências do software do que com detalhes
                tediosos de baixo nível do sistema”.
O QUE É UM FRAMEWORK ?
POR QUE USAR ???


 * Padronização de projetos
 * Disposição de recursos
 * Re-uso de código
 * Flexibilidade e extensibilidade dos projetos
 * Fácil manutenção
 * Produtividade
Yukihiro Matsumoto “Matz”
Dylan
        Eiffel
                           Ada



 Perl                       Python



Smalltalk                Scheme
                  Lisp
Linguagem dinâmica e reflexiva

Linguagem humana

Simplicidade

Extensibilidade

Produtividade
PARA O PROGRAMADOR
JAVA



public void imprime_impares(int limite){
  for (int i = 1; i <= limite; i++) {
    if (i%2 == 1) {
      System.out.println(i);
    }
  }
}
RUBY




def imprime_impares(limite)
  1.upto(limite){ |i| puts i if i%2 == 1 }
end
JAVA
  public class Pessoa {

      private String nome;

      public Pessoa(String nome) {
        this.nome = nome;
      }

      public String getNome() {
        return nome;
      }

      public void setNome(String nome) {
        this.nome = nome;
      }

  }
RUBY




  class Pessoa

    attr_accessor :nome

  end
LEGÍVEL E HUMANA



10.times { print "Ruby!"}
# => Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!
Ruby!

print "Ruby é muito legal".split.reverse
# => legalmuitoéRuby
Ocidente (2000)
David Heinemeier Hansson
BASECAMP
Convenção sobre configuração

DRY (Don’t Repeat Yourself)

Código bonito
CONVENÇÃO SOBRE CONFIGURAÇÃO


Nomes dos arquivos
Nomes das tabelas no banco de dados
Chaves do DB
                           controllers
Nomes das classes            people_controller.rb
                             countries_controller.rb
Mapeamentos                  data_banks_controller.rb
                               models
Ambientes                        person.rb
                                 country.rb
                                 data_bank.rb
                               views
                                 people
                                   _form.html.erb
                                   edit.html.erb
                                   index.html.erb
                                   new.html.erb
CONVENÇÃO SOBRE CONFIGURAÇÃO


Nomes dos arquivos
Nomes das tabelas no banco de dados
Chaves do DB
Nomes das classes
Mapeamentos                      Tabelas
Ambientes
                                  people
                                  countries
                                  data_banks
CONVENÇÃO SOBRE CONFIGURAÇÃO


Nomes dos arquivos
Nomes das tabelas no banco de dados
Chaves do DB                 People
Nomes das classes              id
                               country_id
Mapeamentos
                             DataBanks
Ambientes                      id
                               person_id

                             Countries
                               id
CONVENÇÃO SOBRE CONFIGURAÇÃO


Nomes dos arquivos
Nomes das tabelas no banco de dados
Chaves do DB
Nomes das classes           class Person
Mapeamentos                 end

Ambientes                  class Country
                           end

                           class DataBank
                           end
CONVENÇÃO SOBRE CONFIGURAÇÃO


Nomes dos arquivos
Nomes das tabelas no banco de dados
Chaves do DB
Nomes das classes
Mapeamentos
Ambientes
CONVENÇÃO SOBRE CONFIGURAÇÃO


Nomes dos arquivos
Nomes das tabelas no banco de dados
Chaves do DB
Nomes das classes
Mapeamentos                    Development
Ambientes
                                 Test

                              Production
DRY (DON’T REPEAT YOURSELF)

       Gems               Plugins
CÓDIGO BONITO

  class Person < ActiveRecord::Base

    belongs_to   :state

    has_one      :user,                  :dependent   =>   :destroy
    has_many     :contacts,              :dependent   =>   :destroy
    has_many     :data_banks,            :dependent   =>   :destroy
    has_many     :alternate_addresses,   :dependent   =>   :destroy

    validates_length_of       :name,        :maximum => 120
    validates_length_of       :cep,         :maximum => 9
    validates_presence_of     :type_person, :name, :city
    validates_associated      :state
    validates_uniqueness_of   :cpf

    default_scope :order => "created_at DESC"

    before_save { self.name = name.titleize }
    before_save { self.city = city.titleize }

  end
E na prática ???
INSTALAÇÃO DO RUBY



 •   Windows: Cygwin é a melhor opção. One-click installer.
 •   Linux: apt-get install ruby rdoc irb
 •   Mac OS: 10.5 já instalado. Macport
LINKS DE RUBY
 Documentação
  http://apidock.com/ruby

 Tutoriais
  http://rubylearning.com/satishtalim/tutorial.html
  http://www.ruby-lang.org/pt
  http://www.ruby-doc.org/docs/ProgrammingRuby

 Fóruns
  http://ruby-br.org
  http://www.rubyinside.com
  http://groups.google.com/group/rails-br

 Gens e plugins
  http://rubygems.org
  http://ruby-toolbox.com

 Projetos
  http://rubyforge.org
LINKS DE RAILS

 Documentação
  http://api.rubyonrails.org
  http://apidock.com/rails

 Tutoriais
  http://guias.rubyonrails.pro.br
  http://akitaonrails.com/
  http://rubyonrails.org
  http://edgerails.info
   http://ruby.railstutorial.org
  http://www.railsplugins.org

 Screencasts
  http://railscasts.com

 Projetos
  http://www.opensourcerails.com
www.github.com/joelsondeabreu/blog
EXPERIMENTE ...
@joelsondeabreu

       PERGUNTAS ???




http://www.slideshare.net/joelsondeabreu

Mais conteúdo relacionado

Semelhante a Ruby On Rails (Unisul)

Aula8.pptx
Aula8.pptxAula8.pptx
Aula8.pptxacsme
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento ORNécio de Lima Veras
 
Bancos de Dados Relacionais e NoSQL na Nuvem da AWS
Bancos de Dados Relacionais e NoSQL na Nuvem da AWSBancos de Dados Relacionais e NoSQL na Nuvem da AWS
Bancos de Dados Relacionais e NoSQL na Nuvem da AWSAmazon Web Services LATAM
 
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
 
Gerência de Redes - 9.Gerenciamento LDAP
Gerência de Redes - 9.Gerenciamento LDAPGerência de Redes - 9.Gerenciamento LDAP
Gerência de Redes - 9.Gerenciamento LDAPMauro Tapajós
 
Curso mongo db com php
Curso mongo db com phpCurso mongo db com php
Curso mongo db com phpSuissa
 
Banco de dados
Banco de dadosBanco de dados
Banco de dadosM Serafim
 
Mongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopMongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopDiego Sana
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmGuilherme Blanco
 
Desenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBDesenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBAri Stopassola Junior
 
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
 

Semelhante a Ruby On Rails (Unisul) (20)

Aula8.pptx
Aula8.pptxAula8.pptx
Aula8.pptx
 
Grails
GrailsGrails
Grails
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento OR
 
Aula 1 active diretory - 04082012
Aula 1   active diretory - 04082012Aula 1   active diretory - 04082012
Aula 1 active diretory - 04082012
 
Bancos de Dados Relacionais e NoSQL na Nuvem da AWS
Bancos de Dados Relacionais e NoSQL na Nuvem da AWSBancos de Dados Relacionais e NoSQL na Nuvem da AWS
Bancos de Dados Relacionais e NoSQL na Nuvem da AWS
 
MongoDB + PHP
MongoDB + PHPMongoDB + PHP
MongoDB + PHP
 
No sql std
No sql stdNo sql std
No sql std
 
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 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
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
 
Gerência de Redes - 9.Gerenciamento LDAP
Gerência de Redes - 9.Gerenciamento LDAPGerência de Redes - 9.Gerenciamento LDAP
Gerência de Redes - 9.Gerenciamento LDAP
 
Curso mongo db com php
Curso mongo db com phpCurso mongo db com php
Curso mongo db com php
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
 
Mongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopMongo Db - PHP Day Workshop
Mongo Db - PHP Day Workshop
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
 
Desenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBDesenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDB
 
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
 
Unidade O5
Unidade O5Unidade O5
Unidade O5
 

Último

Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavrasMary Alvarenga
 
Literatura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptLiteratura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptMaiteFerreira4
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxferreirapriscilla84
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfLeloIurk1
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....LuizHenriquedeAlmeid6
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...licinioBorges
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteVanessaCavalcante37
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxleandropereira983288
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 
VARIEDADES LINGUÍSTICAS - 1. pptx
VARIEDADES        LINGUÍSTICAS - 1. pptxVARIEDADES        LINGUÍSTICAS - 1. pptx
VARIEDADES LINGUÍSTICAS - 1. pptxMarlene Cunhada
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Ilda Bicacro
 
Rotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riquezaRotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riquezaronaldojacademico
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.Mary Alvarenga
 
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestreCIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestreElianeElika
 
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamentalAntônia marta Silvestre da Silva
 
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESCOMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESEduardaReis50
 

Último (20)

Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavras
 
Literatura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptLiteratura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.ppt
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptx
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptx
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
VARIEDADES LINGUÍSTICAS - 1. pptx
VARIEDADES        LINGUÍSTICAS - 1. pptxVARIEDADES        LINGUÍSTICAS - 1. pptx
VARIEDADES LINGUÍSTICAS - 1. pptx
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 
Rotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riquezaRotas Transaarianas como o desrto prouz riqueza
Rotas Transaarianas como o desrto prouz riqueza
 
CINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULACINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULA
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestreCIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
 
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
 
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESCOMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
 

Ruby On Rails (Unisul)

  • 1. RUBY ON RAILS Uma cultura de boas práticas
  • 3. O QUE É UM FRAMEWORK ? “Um framework provê uma solução para uma família de problemas semelhantes”. “Um framework captura a funcionalidade comum a várias aplicações. As aplicações devem ter algo razoavelmente grande em comum: pertencem a um mesmo domínio de problema”. “São projetados com para facilitar o desenvolvimento de software, habilitando designers e programadores a gastarem mais tempo determinando as exigências do software do que com detalhes tediosos de baixo nível do sistema”.
  • 4. O QUE É UM FRAMEWORK ?
  • 5.
  • 6. POR QUE USAR ??? * Padronização de projetos * Disposição de recursos * Re-uso de código * Flexibilidade e extensibilidade dos projetos * Fácil manutenção * Produtividade
  • 7.
  • 9. Dylan Eiffel Ada Perl Python Smalltalk Scheme Lisp
  • 10. Linguagem dinâmica e reflexiva Linguagem humana Simplicidade Extensibilidade Produtividade
  • 12. JAVA public void imprime_impares(int limite){ for (int i = 1; i <= limite; i++) { if (i%2 == 1) { System.out.println(i); } } }
  • 13. RUBY def imprime_impares(limite) 1.upto(limite){ |i| puts i if i%2 == 1 } end
  • 14. JAVA public class Pessoa { private String nome; public Pessoa(String nome) { this.nome = nome; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } }
  • 15. RUBY class Pessoa attr_accessor :nome end
  • 16. LEGÍVEL E HUMANA 10.times { print "Ruby!"} # => Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby! Ruby! print "Ruby é muito legal".split.reverse # => legalmuitoéRuby
  • 20. Convenção sobre configuração DRY (Don’t Repeat Yourself) Código bonito
  • 21. CONVENÇÃO SOBRE CONFIGURAÇÃO Nomes dos arquivos Nomes das tabelas no banco de dados Chaves do DB controllers Nomes das classes people_controller.rb countries_controller.rb Mapeamentos data_banks_controller.rb models Ambientes person.rb country.rb data_bank.rb views people _form.html.erb edit.html.erb index.html.erb new.html.erb
  • 22. CONVENÇÃO SOBRE CONFIGURAÇÃO Nomes dos arquivos Nomes das tabelas no banco de dados Chaves do DB Nomes das classes Mapeamentos Tabelas Ambientes people countries data_banks
  • 23. CONVENÇÃO SOBRE CONFIGURAÇÃO Nomes dos arquivos Nomes das tabelas no banco de dados Chaves do DB People Nomes das classes id country_id Mapeamentos DataBanks Ambientes id person_id Countries id
  • 24. CONVENÇÃO SOBRE CONFIGURAÇÃO Nomes dos arquivos Nomes das tabelas no banco de dados Chaves do DB Nomes das classes class Person Mapeamentos end Ambientes class Country end class DataBank end
  • 25. CONVENÇÃO SOBRE CONFIGURAÇÃO Nomes dos arquivos Nomes das tabelas no banco de dados Chaves do DB Nomes das classes Mapeamentos Ambientes
  • 26. CONVENÇÃO SOBRE CONFIGURAÇÃO Nomes dos arquivos Nomes das tabelas no banco de dados Chaves do DB Nomes das classes Mapeamentos Development Ambientes Test Production
  • 27. DRY (DON’T REPEAT YOURSELF) Gems Plugins
  • 28. CÓDIGO BONITO class Person < ActiveRecord::Base belongs_to :state has_one :user, :dependent => :destroy has_many :contacts, :dependent => :destroy has_many :data_banks, :dependent => :destroy has_many :alternate_addresses, :dependent => :destroy validates_length_of :name, :maximum => 120 validates_length_of :cep, :maximum => 9 validates_presence_of :type_person, :name, :city validates_associated :state validates_uniqueness_of :cpf default_scope :order => "created_at DESC" before_save { self.name = name.titleize } before_save { self.city = city.titleize } end
  • 30. INSTALAÇÃO DO RUBY • Windows: Cygwin é a melhor opção. One-click installer. • Linux: apt-get install ruby rdoc irb • Mac OS: 10.5 já instalado. Macport
  • 31. LINKS DE RUBY Documentação http://apidock.com/ruby Tutoriais http://rubylearning.com/satishtalim/tutorial.html http://www.ruby-lang.org/pt http://www.ruby-doc.org/docs/ProgrammingRuby Fóruns http://ruby-br.org http://www.rubyinside.com http://groups.google.com/group/rails-br Gens e plugins http://rubygems.org http://ruby-toolbox.com Projetos http://rubyforge.org
  • 32. LINKS DE RAILS Documentação http://api.rubyonrails.org http://apidock.com/rails Tutoriais http://guias.rubyonrails.pro.br http://akitaonrails.com/ http://rubyonrails.org http://edgerails.info http://ruby.railstutorial.org http://www.railsplugins.org Screencasts http://railscasts.com Projetos http://www.opensourcerails.com
  • 35. @joelsondeabreu PERGUNTAS ??? http://www.slideshare.net/joelsondeabreu