Minicurso de Rails - WTISC 2014

494 views
426 views

Published on

Minicurso desenvolvido para o WTISC 2014, na Universidade Federal do Ceará
Realizado na cidade de Quixadá/Ce

Published in: Internet
1 Comment
2 Likes
Statistics
Notes
No Downloads
Views
Total views
494
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
14
Comments
1
Likes
2
Embeds 0
No embeds

No notes for slide

Minicurso de Rails - WTISC 2014

  1. 1. Minicurso de Ruby on Rails
  2. 2. Quem sou eu? empreendedor desenvolvedor web desenvolvedor mobile aspirante a desenvolvedor de games designer funcionário público @zarathon | fb.com/zarathon
  3. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 26. Como funciona uma aplicaçãoWeb?
  27. 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. 28. O que é o Rails? Arquitetura do Rails - MVC
  29. 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. 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. 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. 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. 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. 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. 35. Desenvolvendo com Rails Vamos criar uma aplicação CRUD agora C reate R ead U pdate D elete
  36. 36. Desenvolvendo com Rails O poderoso SCAFFOLD rails generate scaffold cliente nome:string idade:integer
  37. 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! 
  38. 38. Chegou o fim... Dúvidas? @zarathon | fb.com/zarathon

×