Minicurso de
Ruby on Rails
Quem sou eu?
empreendedor
desenvolvedor web
desenvolvedor mobile
aspirante a desenvolvedor de games
designer
funcionário público
@zarathon | fb.com/zarathon
Agenda
O que é Ruby
Como funciona uma aplicação web
O que é Rails
Aprofundando no Rails
O poder do Scaffold
*Surpresa (Se der tempo)
O que é Ruby
Criada porYukihiro Matsumoto
Ideia concebida em 24 de fevereiro de 1993
Versão 1.0 lançada em 25 de dezembro de 1996
Última versão estável (até 29/11/2013) é a 2.0.0-p353
Orientada a objeto
Inspirada no Perl e Python
Open-Source
Porque programar em Ruby
 A simplicidade da linguagem afeta diretamente a
produtividade diária do desenvolvedor
 Linguagem de fácil leitura
 Tudo é um objeto
 Interactive Shell. Os comandos podem ser testados direto em
terminal, sem necessidade de escrever e “compilar" código
para ver se deu certo
 Comunidade tem o instinto de ajuda, e é fácil conseguir
soluções bem elaboradas
 Na versão 1.9+ o Ruby ganhou uma máquina virtual chamada
YARV (Yet Another Ruby Virtual Machine) que proporcionou
grande aumento de performance
Afinal, o que fazer com Ruby?
 Cálculos complexos
 Scripts de teste
 Importação de dados para Bancos de Dados
 Automatização de tarefas
 Outras linguagens (Frameworks, assim como o Rails)
 APIs
 Parser de logs
 Trabalhar com protocolos diversos
 Ler e escrever arquivos em diversos formatos
 Uma infinidade de coisas bem complexas
Um resumo da linguagem Ruby!
Tipos de Dados
‘‘Não existem "tipos primitivos" em Ruby; todos os tipos são classes’’
Object é a classe mãe de todas as outras classes em Ruby
Um resumo da linguagem Ruby!
Tipos de Dados
‘‘Não existem "tipos primitivos" em Ruby; todos os tipos são classes’’
 Numeric é uma classe abstrata que representa números
 Integer é uma classe que representa números inteiros
 Fixnum representa números inteiros de precisão fixa
 Bignum representa números inteiros de precisão
infinita, dependente apenas da memória disponível
 Float é uma classe que representa números de ponto
flutuante (números reais)
Um resumo da linguagem Ruby!
Tipos de Dados
‘‘Não existem "tipos primitivos" em Ruby; todos os tipos são classes’’
String uma cadeia de caracteres. Pode ser
delimitado por apóstrofes (') ou aspas (").Tudo o
que há entre apóstrofes é interpretado literalmente,
entre aspas o programador deve se utilizar de
símbolos para representar caracteres específicos,
como em C. Exemplos: 'azul', "anbnc"
Um resumo da linguagem Ruby!
Tipos de Dados
‘‘Não existem "tipos primitivos" em Ruby; todos os tipos são classes’’
Symbol é semelhante a uma string, mas dois símbolos iguais
possuem o mesmo endereço de memória, sendo assim é
ótimo para se utilizar como índice numa Hash. Porém,
devido à sua natureza, o coletor de lixo do Ruby não os
elimina. É definido com um sinal de dois pontos (:), por
exemplo, :nome
Um resumo da linguagem Ruby!
Tipos de Dados
‘‘Não existem "tipos primitivos" em Ruby; todos os tipos são classes’’
Array são arrays dinâmicos, que podem ser usados
para representar matrizes e vetores. É delimitado
por colchetes ([]) e cada valor é separado por
vírgula. Exemplo: [4, 'azul', :termometro]
Um resumo da linguagem Ruby!
Tipos de Dados
‘‘Não existem "tipos primitivos" em Ruby; todos os tipos são classes’’
Hash representa um vetor associativo, e, assim como as
Arrays, é dinâmica. É delimitada por chaves ({}), e o índice
precede o valor com um sinal '=>'. Exemplo: {:controller =>
'user', :action => 'index'}. Qualquer objeto pode ser um
índice, mas os mais usados são as Strings e os Symbols
Um resumo da linguagem Ruby!
Tipos de Dados
‘‘Não existem "tipos primitivos" em Ruby; todos os tipos são classes’’
Regexp representa expressões regulares,
delimitadas por //. Funciona de forma
semelhante a Perl. Exemplo: /a|ae/
Um resumo da linguagem Ruby!
Declaração de variáveis
Um objeto em Ruby é declarado com uma atribuição comum:
var = 1
var = ‘foo’
var = new Class
var = new Class(parâmetros)
Um resumo da linguagem Ruby!
Declaração de variáveis
Uma variável local é declarada normalmente.Uma variável de
instância é declarada com um "@" no nome.Uma variável de
classe é declarada com "@@",e uma variável global é declarada
com "$".Variáveis que iniciam com uma letra maiúscula são
consideradas constantes.
local = "local»
@instancia = 42
@@classe = /f+/
$Pi = 3.1415926
Um resumo da linguagem Ruby!
Arrays
a = [1, 'oi', 3.14, 1, 2, [4, 5]]
a[2] # => 3.14
a.reverse # => [[4, 5], 2, 1, 3.14, 'oi', 1]
a.flatten.uniq # => [1, 'oi', 3.14, 2, 4, 5]
a.push(23) # a = [1, 'oi', 3.14, 1, 2, [4, 5], 23]
a << 22 # a = [1, 'oi', 3.14, 1, 2, [4, 5], 23, 22]
Um resumo da linguagem Ruby!
Hash
hash = {'água' => 'molhada', 'fogo' => 'quente'}
puts hash['fogo'] # "quente"
hash.each_pair do |chave, valor|
puts «#{chave} é #{valor}"
end
# Imprime:
# água é molhada
# fogo é quente
hash.delete_if {|chave, valor| chave == 'água'} # Apaga 'água' => 'molhada'
Um resumo da linguagem Ruby!
Blocos e Iteradores
Blocos de código (ou code blocks) são trechos de código que são
passados como parâmetros para métodos.Blocos são
extremamente usados em Ruby.
class Paises
@paises = ["Argentina", "Brasil", "Paraguai", "Uruguai"]
def self.each
for pais in @paises
yield pais
end
end
end
Paises.each do |pais|
puts "Olá, #{pais}!"
end
Um resumo da linguagem Ruby!
Blocos e Iteradores
Iterando em arrays usando blocos:
array = [1, 'oi', 3.14]
array.each do |item|
puts item
end
# => 1
# => 'oi’
# => 3.14
# Equivalente, usando chaves:
array.each { |item|
puts item
}
# => 1
# => 'oi’
# => 3.14
Um resumo da linguagem Ruby!
Blocos e Iteradores
Em Ruby,a estrutura de repetição for é apenas sugar syntax para
acessar o método each,existente em iteratores.
array = [1, 'oi', 3.14]
for item in array
puts item
end
# => 1
# => 'oi’
# => 3.14
Um resumo da linguagem Ruby!
Classes
O código a seguir define uma classe chamada Pessoa.Além de initialize,o
construtor para criar novos objetos,essa classe tem dois métodos: um que
sobre-escreve o operador de comparação > (maior),e sobre-escreve o método
to_s (assim o comando puts pode formatar a saída).Aqui attr_reader é um
exemplo de metaprogramação em Ruby: attr_reader define o método getter,
attr_writer define o método setter,e attr_accessor define ambos.Em Ruby,
todos os atributos são privados e todos os métodos públicos,por padrão.Ruby
permite definir opcionalmente o tipo de acesso usando três palavras-chave:
public (público),private (privado) e protected (protegido).Ruby não suporta
sobrecarga de métodos,mas suporta argumentos padrão,que podem ser
utilizados para o mesmo fim.Também,o último comando em um método é
considerado o seu valor de retorno,permitindo a omissão de um explícito
return.
Um resumo da linguagem Ruby!
Classes
class Pessoa
attr_reader :nome, :idade
def initialize(nome = "Desconhecido", idade)
@nome, @idade = nome, idade
end
def >(pessoa)
if self.idade > pessoa.idade
return true
else
return false
end
end
# Método usado pelo método puts() para formatar a saída
def to_s
«#@nome (#@idade anos)"
end
end
Um resumo da linguagem Ruby!
Herança
Ruby não suporta herança múltipla.Ao invés disso,Ruby usa Mixins para
emular herança múltipla:
class Pessoa < Mamifero # Herança de Mamifero
include Humano # Emulando herança múltipla
end
Fatos interessantes sobre Ruby
 Em Ruby você não precisa declarar o tipo de variável
explicitamente
 O uso de Meta-programação é fácil e faz parte da proposta da
linguagem
 Sobre-escrever métodos é fácil
 Sem getter e setters escritos manualmente
 Parêntese é opcional
 Monkey Patch é de fácil implementação
Gems em Ruby
 Abstraem funcionalidades básicas da aplicação para pedaços
separados, podendo assim serem usados em qualquer novo
projeto sem ter que duplicar código manualmente
 Ajudam a comunidade proporcionando funcionalidades que
são úteis a mais de uma pessoa
 Criar GEMs ajudam no entendimento de como Ruby funciona e
como implementar meta-programação
 São em geral GRATUITAS, apenas sendo pagas em casos muito
específicos relacionadas a regras de negócio de um cliente, por
exemplo
Como funciona uma aplicaçãoWeb?
O que é o Rails?
 Framework de código aberto desenvolvido em Ruby
 Tem por objetivo o desenvolvimento rápido e fácil de
aplicações web
 Convenção em vez de configuração
 Don’t Repeat Yourself (DRY)
 Criado em 2004 por David Heinemeier Hansson (DHH)
O que é o Rails?
Arquitetura do Rails - MVC
O que é o Rails?
Arquitetura do Rails - MVC
 A parte responsável por apresentar os resultados na página
web é chamado de Apresentação (View).
 A camada que faz o trabalho de tratar os parâmetros da
requisição e direcionar para as demais camadas é chamada de
Controladora (Controller).
 As classes que representam suas entidades e as que te ajudam
a armazenar e buscar os dados são chamadas de Modelo
(Model).
Porque usar Rails?
 Alta velocidade de desenvolvimento
 Flexibilidade
 Código legível e com qualidade
 Integração fácil entre times
 Deploy facilitado
 Boa documentação, vasto material na internet
 Apostila da Caelum gratuita sobre Rails
Onde estudar Rails?
 http://blog.caelum.com.br/ - Blog da Caelum
 http://andersonleite.com.br/ - Anderson Leite
 http://yehudakatz.com/ - Yehuda Katz
 http://fabiokung.com/ - Fabio Kung
 http://akitaonrails.com/ - Fábio Akita
 http://blog.plataformatec.com.br/ - José Valim
 http://nomedojogo.com/ - Carlos Brando
 http://devblog.avdi.org/ - Avdi Grimm
 http://blog.hasmanythrough.com/ - Josh Susser
 http://rubyflow.com/ - Agrega conteúdo de vários sites
Mãos no Rails
Instalar o rails
#gem install rails
Ajuda do rails
#rails --help
Criar uma aplicação
#rails new [caminho-da-app]
Rodar o servidor
#rails server
Estrutura do Rails App
 app - A maioria dos arquivos especícos da nossa aplicação ficam aqui (inclusive
todo o MVC, dividido em diretórios);
 bin - Executáveis do Rails e das gems instaladas;
 config - Configurações da aplicação;
 db - Migrações, esquema e outros arquivos relacionados ao banco de dados;
 doc - Documentação do sistema;
 lib - Bibliotecas auxiliares;
 log - Informações de log;
 public - Arquivos estáticos que serão servidos pela WEB;
 test - Testes da nossa aplicação;
 tmp - Arquivos temporários como cache e informações de sessões;
 vendor - Dependências e bibliotecas de terceiros.
Comandos do Rails
Criar um modelo
#rails generate model [nome do modelo]
Criar uma migração
#rails generate migration [nome da migração]
Criar um controller
#rails generate controller [nome do controller]
Desenvolvendo com Rails
Vamos criar uma aplicação CRUD agora
C reate
R ead
U pdate
D elete
Desenvolvendo com Rails
O poderoso SCAFFOLD
rails generate scaffold cliente nome:string idade:integer
Desenvolvendo com Rails
E agora?! O que fazer!?
 Estudar como Rails faz o relacionamento entre os
modelos
 Procurar pro grupos, recomendo o GURU-SP
 Ler um pouco mais a documentação do Rails
 Fazer um grupo de estudo
 Procurar a apostila da Caelum, é grátis!

Chegou o fim...
Dúvidas?
@zarathon | fb.com/zarathon

Mais conteúdo relacionado

PDF
Introdução a Linguagem de Programação Ruby
PPTX
JavaScript - Expressões Regulares
PDF
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
PDF
Javafx Introdução
PPTX
1.introducao java
PDF
Aula 03 - Classes math e string - JAVA
PPTX
Microsoft S2B - C# ASP.NET
PDF
Aula 02 - Aspectos fundamentais - JAVA
Introdução a Linguagem de Programação Ruby
JavaScript - Expressões Regulares
Ruby on Rails (VERSAO COM LAYOUT CONSERTADO)
Javafx Introdução
1.introducao java
Aula 03 - Classes math e string - JAVA
Microsoft S2B - C# ASP.NET
Aula 02 - Aspectos fundamentais - JAVA

Semelhante a Minicurso de Rails - WTISC 2014 (20)

PPTX
Curso ruby on rails
PDF
Apresentação ruby + rails 2014
PDF
Palestra Ruby
PPTX
Ruby e Rails
PDF
Desenvolvimento web com Ruby on Rails (parte 1)
ODP
Minicurso Ruby on Rails Dextra
PDF
Aprendendo ruby
PPTX
PDF
Introdução ao Ruby on Rails
PDF
Esta começando a programar para a web? Então começe com Rails
PPTX
Introdução ao Ruby
PDF
Apresentação ruby + rails
PPT
Ruby, Rails e Diversão
ODP
Curso Ruby
PDF
Ruby & Rails
ODP
Palestra Faculdade Lourenço Filho
ODP
Slides do curso Programação web com RubyOnRails
PDF
Minicurso Ruby on Rails
PPT
Entendendo um pouco melhor o que é Ruby
Curso ruby on rails
Apresentação ruby + rails 2014
Palestra Ruby
Ruby e Rails
Desenvolvimento web com Ruby on Rails (parte 1)
Minicurso Ruby on Rails Dextra
Aprendendo ruby
Introdução ao Ruby on Rails
Esta começando a programar para a web? Então começe com Rails
Introdução ao Ruby
Apresentação ruby + rails
Ruby, Rails e Diversão
Curso Ruby
Ruby & Rails
Palestra Faculdade Lourenço Filho
Slides do curso Programação web com RubyOnRails
Minicurso Ruby on Rails
Entendendo um pouco melhor o que é Ruby
Anúncio

Mais de Zarathon Maia (8)

PPTX
Como ser um dev de vergonha!
PDF
Startup De estudantes à milionários
PDF
Curso de HTML5 - Aula01
PDF
Apresentação Wordpress FLISOL 2010
PDF
Camisas Turma Ufc
PDF
Apresentação Java Web - Jsf+Hibernate
PPT
Apresentação Java Web Si Ufc Quixadá - MVC
PPT
Apresentação Java Web Si Ufc Quixadá
Como ser um dev de vergonha!
Startup De estudantes à milionários
Curso de HTML5 - Aula01
Apresentação Wordpress FLISOL 2010
Camisas Turma Ufc
Apresentação Java Web - Jsf+Hibernate
Apresentação Java Web Si Ufc Quixadá - MVC
Apresentação Java Web Si Ufc Quixadá
Anúncio

Último (10)

PPTX
slide preparativo para lingua portuguesa
PPTX
Introducao PARA WEB E SITE PARA SIMPLES APRENDIZADO.pptx
PPTX
SLIDE 1 PARTE 1 Fund da Informatica .pptx
DOCX
Cópia de ACOMPANHAMENTO PARA A RECOMPOSIÇÃO DA APRENDIZAGEM 8 ano História.docx
PPTX
Questionario-Fundamentos-de-Informatica-e-Design.pptx
PDF
Pinealle - Aceleradora de Negócios em Canais Digitais
PPTX
organizaoefuncionamentodeunidadedeenfermagem-240414190344-a21272a1 (1).pptx
PPTX
redes de computadores e internet - kurose.pptx
PPTX
SLIDE 1 PARTE 2 Fund da Informatica .pptx
PPTX
cap1-Kurose (1)- redes de computadores.pptx
slide preparativo para lingua portuguesa
Introducao PARA WEB E SITE PARA SIMPLES APRENDIZADO.pptx
SLIDE 1 PARTE 1 Fund da Informatica .pptx
Cópia de ACOMPANHAMENTO PARA A RECOMPOSIÇÃO DA APRENDIZAGEM 8 ano História.docx
Questionario-Fundamentos-de-Informatica-e-Design.pptx
Pinealle - Aceleradora de Negócios em Canais Digitais
organizaoefuncionamentodeunidadedeenfermagem-240414190344-a21272a1 (1).pptx
redes de computadores e internet - kurose.pptx
SLIDE 1 PARTE 2 Fund da Informatica .pptx
cap1-Kurose (1)- redes de computadores.pptx

Minicurso de Rails - WTISC 2014

  • 2. Quem sou eu? empreendedor desenvolvedor web desenvolvedor mobile aspirante a desenvolvedor de games designer funcionário público @zarathon | fb.com/zarathon
  • 3. Agenda O que é Ruby Como funciona uma aplicação web O que é Rails Aprofundando no Rails O poder do Scaffold *Surpresa (Se der tempo)
  • 4. O que é Ruby Criada porYukihiro Matsumoto Ideia concebida em 24 de fevereiro de 1993 Versão 1.0 lançada em 25 de dezembro de 1996 Última versão estável (até 29/11/2013) é a 2.0.0-p353 Orientada a objeto Inspirada no Perl e Python Open-Source
  • 5. Porque programar em Ruby  A simplicidade da linguagem afeta diretamente a produtividade diária do desenvolvedor  Linguagem de fácil leitura  Tudo é um objeto  Interactive Shell. Os comandos podem ser testados direto em terminal, sem necessidade de escrever e “compilar" código para ver se deu certo  Comunidade tem o instinto de ajuda, e é fácil conseguir soluções bem elaboradas  Na versão 1.9+ o Ruby ganhou uma máquina virtual chamada YARV (Yet Another Ruby Virtual Machine) que proporcionou grande aumento de performance
  • 6. Afinal, o que fazer com Ruby?  Cálculos complexos  Scripts de teste  Importação de dados para Bancos de Dados  Automatização de tarefas  Outras linguagens (Frameworks, assim como o Rails)  APIs  Parser de logs  Trabalhar com protocolos diversos  Ler e escrever arquivos em diversos formatos  Uma infinidade de coisas bem complexas
  • 7. Um resumo da linguagem Ruby! Tipos de Dados ‘‘Não existem "tipos primitivos" em Ruby; todos os tipos são classes’’ Object é a classe mãe de todas as outras classes em Ruby
  • 8. Um resumo da linguagem Ruby! Tipos de Dados ‘‘Não existem "tipos primitivos" em Ruby; todos os tipos são classes’’  Numeric é uma classe abstrata que representa números  Integer é uma classe que representa números inteiros  Fixnum representa números inteiros de precisão fixa  Bignum representa números inteiros de precisão infinita, dependente apenas da memória disponível  Float é uma classe que representa números de ponto flutuante (números reais)
  • 9. Um resumo da linguagem Ruby! Tipos de Dados ‘‘Não existem "tipos primitivos" em Ruby; todos os tipos são classes’’ String uma cadeia de caracteres. Pode ser delimitado por apóstrofes (') ou aspas (").Tudo o que há entre apóstrofes é interpretado literalmente, entre aspas o programador deve se utilizar de símbolos para representar caracteres específicos, como em C. Exemplos: 'azul', "anbnc"
  • 10. Um resumo da linguagem Ruby! Tipos de Dados ‘‘Não existem "tipos primitivos" em Ruby; todos os tipos são classes’’ Symbol é semelhante a uma string, mas dois símbolos iguais possuem o mesmo endereço de memória, sendo assim é ótimo para se utilizar como índice numa Hash. Porém, devido à sua natureza, o coletor de lixo do Ruby não os elimina. É definido com um sinal de dois pontos (:), por exemplo, :nome
  • 11. Um resumo da linguagem Ruby! Tipos de Dados ‘‘Não existem "tipos primitivos" em Ruby; todos os tipos são classes’’ Array são arrays dinâmicos, que podem ser usados para representar matrizes e vetores. É delimitado por colchetes ([]) e cada valor é separado por vírgula. Exemplo: [4, 'azul', :termometro]
  • 12. Um resumo da linguagem Ruby! Tipos de Dados ‘‘Não existem "tipos primitivos" em Ruby; todos os tipos são classes’’ Hash representa um vetor associativo, e, assim como as Arrays, é dinâmica. É delimitada por chaves ({}), e o índice precede o valor com um sinal '=>'. Exemplo: {:controller => 'user', :action => 'index'}. Qualquer objeto pode ser um índice, mas os mais usados são as Strings e os Symbols
  • 13. Um resumo da linguagem Ruby! Tipos de Dados ‘‘Não existem "tipos primitivos" em Ruby; todos os tipos são classes’’ Regexp representa expressões regulares, delimitadas por //. Funciona de forma semelhante a Perl. Exemplo: /a|ae/
  • 14. Um resumo da linguagem Ruby! Declaração de variáveis Um objeto em Ruby é declarado com uma atribuição comum: var = 1 var = ‘foo’ var = new Class var = new Class(parâmetros)
  • 15. Um resumo da linguagem Ruby! Declaração de variáveis Uma variável local é declarada normalmente.Uma variável de instância é declarada com um "@" no nome.Uma variável de classe é declarada com "@@",e uma variável global é declarada com "$".Variáveis que iniciam com uma letra maiúscula são consideradas constantes. local = "local» @instancia = 42 @@classe = /f+/ $Pi = 3.1415926
  • 16. Um resumo da linguagem Ruby! Arrays a = [1, 'oi', 3.14, 1, 2, [4, 5]] a[2] # => 3.14 a.reverse # => [[4, 5], 2, 1, 3.14, 'oi', 1] a.flatten.uniq # => [1, 'oi', 3.14, 2, 4, 5] a.push(23) # a = [1, 'oi', 3.14, 1, 2, [4, 5], 23] a << 22 # a = [1, 'oi', 3.14, 1, 2, [4, 5], 23, 22]
  • 17. Um resumo da linguagem Ruby! Hash hash = {'água' => 'molhada', 'fogo' => 'quente'} puts hash['fogo'] # "quente" hash.each_pair do |chave, valor| puts «#{chave} é #{valor}" end # Imprime: # água é molhada # fogo é quente hash.delete_if {|chave, valor| chave == 'água'} # Apaga 'água' => 'molhada'
  • 18. Um resumo da linguagem Ruby! Blocos e Iteradores Blocos de código (ou code blocks) são trechos de código que são passados como parâmetros para métodos.Blocos são extremamente usados em Ruby. class Paises @paises = ["Argentina", "Brasil", "Paraguai", "Uruguai"] def self.each for pais in @paises yield pais end end end Paises.each do |pais| puts "Olá, #{pais}!" end
  • 19. Um resumo da linguagem Ruby! Blocos e Iteradores Iterando em arrays usando blocos: array = [1, 'oi', 3.14] array.each do |item| puts item end # => 1 # => 'oi’ # => 3.14 # Equivalente, usando chaves: array.each { |item| puts item } # => 1 # => 'oi’ # => 3.14
  • 20. Um resumo da linguagem Ruby! Blocos e Iteradores Em Ruby,a estrutura de repetição for é apenas sugar syntax para acessar o método each,existente em iteratores. array = [1, 'oi', 3.14] for item in array puts item end # => 1 # => 'oi’ # => 3.14
  • 21. Um resumo da linguagem Ruby! Classes O código a seguir define uma classe chamada Pessoa.Além de initialize,o construtor para criar novos objetos,essa classe tem dois métodos: um que sobre-escreve o operador de comparação > (maior),e sobre-escreve o método to_s (assim o comando puts pode formatar a saída).Aqui attr_reader é um exemplo de metaprogramação em Ruby: attr_reader define o método getter, attr_writer define o método setter,e attr_accessor define ambos.Em Ruby, todos os atributos são privados e todos os métodos públicos,por padrão.Ruby permite definir opcionalmente o tipo de acesso usando três palavras-chave: public (público),private (privado) e protected (protegido).Ruby não suporta sobrecarga de métodos,mas suporta argumentos padrão,que podem ser utilizados para o mesmo fim.Também,o último comando em um método é considerado o seu valor de retorno,permitindo a omissão de um explícito return.
  • 22. Um resumo da linguagem Ruby! Classes class Pessoa attr_reader :nome, :idade def initialize(nome = "Desconhecido", idade) @nome, @idade = nome, idade end def >(pessoa) if self.idade > pessoa.idade return true else return false end end # Método usado pelo método puts() para formatar a saída def to_s «#@nome (#@idade anos)" end end
  • 23. Um resumo da linguagem Ruby! Herança Ruby não suporta herança múltipla.Ao invés disso,Ruby usa Mixins para emular herança múltipla: class Pessoa < Mamifero # Herança de Mamifero include Humano # Emulando herança múltipla end
  • 24. Fatos interessantes sobre Ruby  Em Ruby você não precisa declarar o tipo de variável explicitamente  O uso de Meta-programação é fácil e faz parte da proposta da linguagem  Sobre-escrever métodos é fácil  Sem getter e setters escritos manualmente  Parêntese é opcional  Monkey Patch é de fácil implementação
  • 25. Gems em Ruby  Abstraem funcionalidades básicas da aplicação para pedaços separados, podendo assim serem usados em qualquer novo projeto sem ter que duplicar código manualmente  Ajudam a comunidade proporcionando funcionalidades que são úteis a mais de uma pessoa  Criar GEMs ajudam no entendimento de como Ruby funciona e como implementar meta-programação  São em geral GRATUITAS, apenas sendo pagas em casos muito específicos relacionadas a regras de negócio de um cliente, por exemplo
  • 26. Como funciona uma aplicaçãoWeb?
  • 27. O que é o Rails?  Framework de código aberto desenvolvido em Ruby  Tem por objetivo o desenvolvimento rápido e fácil de aplicações web  Convenção em vez de configuração  Don’t Repeat Yourself (DRY)  Criado em 2004 por David Heinemeier Hansson (DHH)
  • 28. O que é o Rails? Arquitetura do Rails - MVC
  • 29. O que é o Rails? Arquitetura do Rails - MVC  A parte responsável por apresentar os resultados na página web é chamado de Apresentação (View).  A camada que faz o trabalho de tratar os parâmetros da requisição e direcionar para as demais camadas é chamada de Controladora (Controller).  As classes que representam suas entidades e as que te ajudam a armazenar e buscar os dados são chamadas de Modelo (Model).
  • 30. Porque usar Rails?  Alta velocidade de desenvolvimento  Flexibilidade  Código legível e com qualidade  Integração fácil entre times  Deploy facilitado  Boa documentação, vasto material na internet  Apostila da Caelum gratuita sobre Rails
  • 31. Onde estudar Rails?  http://blog.caelum.com.br/ - Blog da Caelum  http://andersonleite.com.br/ - Anderson Leite  http://yehudakatz.com/ - Yehuda Katz  http://fabiokung.com/ - Fabio Kung  http://akitaonrails.com/ - Fábio Akita  http://blog.plataformatec.com.br/ - José Valim  http://nomedojogo.com/ - Carlos Brando  http://devblog.avdi.org/ - Avdi Grimm  http://blog.hasmanythrough.com/ - Josh Susser  http://rubyflow.com/ - Agrega conteúdo de vários sites
  • 32. Mãos no Rails Instalar o rails #gem install rails Ajuda do rails #rails --help Criar uma aplicação #rails new [caminho-da-app] Rodar o servidor #rails server
  • 33. Estrutura do Rails App  app - A maioria dos arquivos especícos da nossa aplicação ficam aqui (inclusive todo o MVC, dividido em diretórios);  bin - Executáveis do Rails e das gems instaladas;  config - Configurações da aplicação;  db - Migrações, esquema e outros arquivos relacionados ao banco de dados;  doc - Documentação do sistema;  lib - Bibliotecas auxiliares;  log - Informações de log;  public - Arquivos estáticos que serão servidos pela WEB;  test - Testes da nossa aplicação;  tmp - Arquivos temporários como cache e informações de sessões;  vendor - Dependências e bibliotecas de terceiros.
  • 34. Comandos do Rails Criar um modelo #rails generate model [nome do modelo] Criar uma migração #rails generate migration [nome da migração] Criar um controller #rails generate controller [nome do controller]
  • 35. Desenvolvendo com Rails Vamos criar uma aplicação CRUD agora C reate R ead U pdate D elete
  • 36. Desenvolvendo com Rails O poderoso SCAFFOLD rails generate scaffold cliente nome:string idade:integer
  • 37. Desenvolvendo com Rails E agora?! O que fazer!?  Estudar como Rails faz o relacionamento entre os modelos  Procurar pro grupos, recomendo o GURU-SP  Ler um pouco mais a documentação do Rails  Fazer um grupo de estudo  Procurar a apostila da Caelum, é grátis! 