SlideShare a Scribd company logo
1 of 38
Download to read offline
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

More Related Content

Similar to Minicurso de Rails - WTISC 2014

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
 
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
 
Minicurso Ruby on Rails Dextra
Minicurso Ruby on Rails DextraMinicurso Ruby on Rails Dextra
Minicurso Ruby on Rails DextraDextra
 
Apresentação Ruby no Dojo da UFBA
Apresentação Ruby no Dojo da UFBAApresentação Ruby no Dojo da UFBA
Apresentação Ruby no Dojo da UFBALuciano Borges
 
Apresentação ruby + rails 2014
Apresentação ruby + rails 2014Apresentação ruby + rails 2014
Apresentação ruby + rails 2014Marcelo Bohn
 
Ruby, Rails e Diversão
Ruby, Rails e DiversãoRuby, Rails e Diversão
Ruby, Rails e DiversãoJulio Monteiro
 
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
 
Ruby para programadores java
Ruby para programadores javaRuby para programadores java
Ruby para programadores javaRodrigo Urubatan
 
Testes Automatizados em Ruby on Rails
Testes Automatizados em Ruby on RailsTestes Automatizados em Ruby on Rails
Testes Automatizados em Ruby on RailsThiago Cifani
 
Introdução à programação em Ruby
Introdução à programação em RubyIntrodução à programação em Ruby
Introdução à programação em RubyDaniel Andrade
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHPPaulo Dayvson
 

Similar to Minicurso de Rails - WTISC 2014 (20)

Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 
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)
 
Curso Ruby
Curso RubyCurso Ruby
Curso Ruby
 
Curso ruby on rails
Curso ruby on railsCurso ruby on rails
Curso ruby on rails
 
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
 
Minicurso Ruby on Rails Dextra
Minicurso Ruby on Rails DextraMinicurso Ruby on Rails Dextra
Minicurso Ruby on Rails Dextra
 
Apresentação Ruby no Dojo da UFBA
Apresentação Ruby no Dojo da UFBAApresentação Ruby no Dojo da UFBA
Apresentação Ruby no Dojo da UFBA
 
Apresentação ruby + rails 2014
Apresentação ruby + rails 2014Apresentação ruby + rails 2014
Apresentação ruby + rails 2014
 
Ruby, Rails e Diversão
Ruby, Rails e DiversãoRuby, Rails e Diversão
Ruby, Rails e Diversão
 
Aprendendo ruby
Aprendendo rubyAprendendo ruby
Aprendendo ruby
 
Palestra Ruby
Palestra RubyPalestra Ruby
Palestra Ruby
 
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
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on rails
 
Ruby
RubyRuby
Ruby
 
Ruby para programadores java
Ruby para programadores javaRuby para programadores java
Ruby para programadores java
 
Testes Automatizados em Ruby on Rails
Testes Automatizados em Ruby on RailsTestes Automatizados em Ruby on Rails
Testes Automatizados em Ruby on Rails
 
Introdução à programação em Ruby
Introdução à programação em RubyIntrodução à programação em Ruby
Introdução à programação em Ruby
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHP
 
Introdução a php
Introdução a phpIntrodução a php
Introdução a php
 
Ruby and Rails
Ruby and RailsRuby and Rails
Ruby and Rails
 

More from Zarathon Maia

Como ser um dev de vergonha!
Como ser um dev de vergonha!Como ser um dev de vergonha!
Como ser um dev de vergonha!Zarathon Maia
 
Startup De estudantes à milionários
Startup  De estudantes à milionáriosStartup  De estudantes à milionários
Startup De estudantes à milionáriosZarathon Maia
 
Curso de HTML5 - Aula01
Curso de HTML5 - Aula01Curso de HTML5 - Aula01
Curso de HTML5 - Aula01Zarathon Maia
 
Apresentação Wordpress FLISOL 2010
Apresentação Wordpress FLISOL 2010Apresentação Wordpress FLISOL 2010
Apresentação Wordpress FLISOL 2010Zarathon Maia
 
Apresentação Java Web - Jsf+Hibernate
Apresentação Java Web - Jsf+HibernateApresentação Java Web - Jsf+Hibernate
Apresentação Java Web - Jsf+HibernateZarathon Maia
 
Apresentação Java Web Si Ufc Quixadá - MVC
Apresentação Java Web Si Ufc Quixadá - MVCApresentação Java Web Si Ufc Quixadá - MVC
Apresentação Java Web Si Ufc Quixadá - MVCZarathon Maia
 
Apresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc QuixadáApresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc QuixadáZarathon Maia
 

More from Zarathon Maia (8)

Como ser um dev de vergonha!
Como ser um dev de vergonha!Como ser um dev de vergonha!
Como ser um dev de vergonha!
 
Startup De estudantes à milionários
Startup  De estudantes à milionáriosStartup  De estudantes à milionários
Startup De estudantes à milionários
 
Curso de HTML5 - Aula01
Curso de HTML5 - Aula01Curso de HTML5 - Aula01
Curso de HTML5 - Aula01
 
Apresentação Wordpress FLISOL 2010
Apresentação Wordpress FLISOL 2010Apresentação Wordpress FLISOL 2010
Apresentação Wordpress FLISOL 2010
 
Camisas Turma Ufc
Camisas Turma UfcCamisas Turma Ufc
Camisas Turma Ufc
 
Apresentação Java Web - Jsf+Hibernate
Apresentação Java Web - Jsf+HibernateApresentação Java Web - Jsf+Hibernate
Apresentação Java Web - Jsf+Hibernate
 
Apresentação Java Web Si Ufc Quixadá - MVC
Apresentação Java Web Si Ufc Quixadá - MVCApresentação Java Web Si Ufc Quixadá - MVC
Apresentação Java Web Si Ufc Quixadá - MVC
 
Apresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc QuixadáApresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc Quixadá
 

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! 