minicurso de rails - wtisc 2014

38
Minicurso de Ruby on Rails

Upload: zarathon-maia

Post on 24-Dec-2014

296 views

Category:

Internet


0 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Minicurso de Rails - WTISC 2014

Minicurso de Ruby on Rails

Page 2: Minicurso de Rails - WTISC 2014

Quem sou eu?

empreendedor

desenvolvedor web

desenvolvedor mobile

aspirante a desenvolvedor de games

designer

funcionário público

@zarathon | fb.com/zarathon

Page 3: Minicurso de Rails - WTISC 2014

Agenda

O que é Ruby

Como funciona uma aplicação web

O que é Rails

Aprofundando no Rails

O poder do Scaffold

*Surpresa (Se der tempo)

Page 4: Minicurso de Rails - WTISC 2014

O que é Ruby

Criada por Yukihiro 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

Page 5: Minicurso de Rails - WTISC 2014

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

Page 6: Minicurso de Rails - WTISC 2014

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

Page 7: Minicurso de Rails - WTISC 2014

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

Page 8: Minicurso de Rails - WTISC 2014

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)

Page 9: Minicurso de Rails - WTISC 2014

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', "a\nb\nc"

Page 10: Minicurso de Rails - WTISC 2014

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

Page 11: Minicurso de Rails - WTISC 2014

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]

Page 12: Minicurso de Rails - WTISC 2014

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

Page 13: Minicurso de Rails - WTISC 2014

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/

Page 14: Minicurso de Rails - WTISC 2014

Um resumo da linguagem Ruby!Declaração de variáveis

Um objeto em Ruby é declarado com uma atribuição comum:

var = 1var = ‘foo’var = new Classvar = new Class(parâmetros)

Page 15: Minicurso de Rails - WTISC 2014

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

Page 16: Minicurso de Rails - WTISC 2014

Um resumo da linguagem Ruby!Arrays

a = [1, 'oi', 3.14, 1, 2, [4, 5]] a[2] # => 3.14a.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]

Page 17: Minicurso de Rails - WTISC 2014

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'

Page 18: Minicurso de Rails - WTISC 2014

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 endend Paises.each do |pais| puts "Olá, #{pais}!"end

Page 19: Minicurso de Rails - WTISC 2014

Um resumo da linguagem Ruby!Blocos e Iteradores

Iterando em arrays usando blocos:

array = [1, 'oi', 3.14] array.each do |item| puts itemend# => 1# => 'oi’# => 3.14 # Equivalente, usando chaves:array.each { |item| puts item}# => 1# => 'oi’# => 3.14

Page 20: Minicurso de Rails - WTISC 2014

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 itemend # => 1# => 'oi’# => 3.14

Page 21: Minicurso de Rails - WTISC 2014

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.

Page 22: Minicurso de Rails - WTISC 2014

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)" endend

Page 23: Minicurso de Rails - WTISC 2014

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últiplaend

Page 24: Minicurso de Rails - WTISC 2014

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

Page 25: Minicurso de Rails - WTISC 2014

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

Page 26: Minicurso de Rails - WTISC 2014

Como funciona uma aplicação Web?

Page 27: Minicurso de Rails - WTISC 2014

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)

Page 28: Minicurso de Rails - WTISC 2014

O que é o Rails?Arquitetura do Rails - MVC

Page 29: Minicurso de Rails - WTISC 2014

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).

Page 30: Minicurso de Rails - WTISC 2014

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

Page 31: Minicurso de Rails - WTISC 2014

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

Page 32: Minicurso de Rails - WTISC 2014

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

Page 33: Minicurso de Rails - WTISC 2014

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.

Page 34: Minicurso de Rails - WTISC 2014

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]

Page 35: Minicurso de Rails - WTISC 2014

Desenvolvendo com Rails

Vamos criar uma aplicação CRUD agora

C reateR eadU pdateD elete

Page 36: Minicurso de Rails - WTISC 2014

Desenvolvendo com Rails

O poderoso SCAFFOLD

rails generate scaffold cliente nome:string idade:integer

Page 37: Minicurso de Rails - WTISC 2014

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!

Page 38: Minicurso de Rails - WTISC 2014

Chegou o fim...

Dúvidas?@zarathon | fb.com/zarathon