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
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
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)
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]
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!