ruby on rails enecomp 2008
Post on 13-Jan-2015
1.743 Views
Preview:
DESCRIPTION
TRANSCRIPT
1
Ruby on Rails
Allisson Azevedo - http://allisson.eti.br
2
Sobre o Instrutor
Allisson Azevedo - http://allisson.eti.br Concluinte do curso de Licenciatura em
Computação – UEPB Àreas de Interesse:
– Desenvolvimento Web– Redes (Arquitetura, Segurança)– Sistemas Operacionais (Linux,
FreeBSD)– Cloud Computing
3
Agenda
I. Conhecendo RubyII.Conhecendo RailsIII.Desenvolvendo em RailsIV.Deployment de RailsV.Futuro do Rails
4
I - Conhecendo Ruby
Allisson Azevedo - http://allisson.eti.br
5
Ruby - http://www.ruby-lang.org
6
Ruby - Definição
A dynamic, open source programming language with a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write.
7
Ruby - Histórico
Criado por Yukihiro “Matz” Matsumoto Objetivos
– Ser um Perl melhorado– Mais OO do que Python
1993: Começo do desenvolvimento 1995: Versão 0.95 disponível 1996: Versão 1.0 disponível 1998: Site traduzido para inglês
8
Ruby – Histórico (Cont)
1999:– Matz publica o primeiro livro– Ruby Workshop
2000: InformIT publica entrevista com Matz
2001:– Programming Ruby (Pickaxe)– Rubyconf.new
2003: Versão 1.8.0 lançada
9
Ruby – Histórico (Cont)
2004: O Framework Rails é lançado– Killer App de Ruby– Grande interesse por Ruby– Muitos livros publicados
2007: Versão 1.8.6 lançada 2008: Versão 1.8.7 lançada
10
Ruby segundo o TIOBE
11
Ruby - Características
Opensource (GPLv2) Feita para humanos
– Fácil de ler e escrever– Poderosa– Divertida
Interpretador multiplataforma– Windows, DOS– Linux, *BSD, MacOSX– BeOS– OS/2
12
Ruby – Características (Cont)
Orientada a objeto– Tudo é um objeto!
Tipagem Dinâmica Tipagem Forte Garbage collector
– Mark-and-sweep Tratamento de exceções Blocks (closures) Módulos (mix-in)
13
Ruby – IRB
Interactive Ruby Console interativo para testar códigos
simples em Ruby Muito utilizado nesses slides
14
Ruby - IRB
15
Ruby – Hello World
16
Ruby – Tipagem Dinâmica
17
Ruby – Tipagem Forte
18
Ruby – Métodos de um objeto
19
Ruby – Tipos
String Number Array Symbol Hash
20
Ruby – Strings
Strings são definidas usando aspas simples ou duplas
As aspas duplas permitem que você utilize o conteúdo de uma variável na string
21
Ruby – Strings (Cont)
22
Ruby – Number
Existem três tipos principais para representar números
Float– Ponto flutuante
Fixnum– Inteiros pequenos
Bignum– Inteiros grandes
23
Ruby – Number (Cont)
24
Ruby – Arrays
Contém uma coleção de objetos Os objetos podem ser de tipos diferentes Os objetos são acessados pelo seu index
25
Ruby – Arrays (Cont)
26
Ruby – Symbol
Pode ser utilizado no lugar de strings e vice-versa
Razões para usar symbol no lugar de string:– Se ocorrer a repetição da mesma string
1000 vezes, vai ser ocupado 1000 vezes o espaço de memória dessa string
Para declarar um symbol, usamos “:” antes do nome– :simbolo1, :simbolo2
27
Ruby – Symbol (Cont)
Usos de symbol em Ruby:– Hash keys
hash = {:nome => 'Allisson}– Argumento para métodos
meu_metodo(:valor1,:valor2)
28
Ruby – Symbol (Cont)
29
Ruby – Hashes
São arrays que possuem a estrutura de chave/valor
Não permite duplicação de chaves Geralmente utiliza symbols como chaves
30
Ruby – Hashes (Cont)
31
Ruby – Hashes (Cont)
32
Ruby – Classes
Todo objeto em Ruby possui sua própria classe
Para descobrir a classe do objeto utilize a construção objeto.class
33
Ruby – Classes (Cont)
34
Ruby – Classes (Cont)
35
Ruby – Classes (Cont)
36
Ruby – Herança
Uma classe filha pode herdar toda a estrutura e variáveis de uma classe mãe
Ruby possui herança única (de propósito)
37
Ruby – Herança (Cont)
38
Ruby – Herança (Cont)
39
Ruby – Variáveis
Locais– Existem nos limites do método– variavel_local = 10
Globais– Acessível em qualquer parte do
programa– $variavel_global = 10
40
Ruby – Variáveis (Cont)
Instância– Implementam os atributos de uma
classe, acessível dentro da classe– @variavel_instancia = 10
Classe– São compartilhadas entre todos os
objetos dessa classe– @@variavel_classe = 10
41
Ruby – Variáveis (Cont)
42
Ruby – Variáveis (Cont)
43
Ruby – Blocks
São funções anônimas que podem ser passadas como parâmetros para um método
Delimitados por “{}” ou “do end”– “{}” para blocos de uma linha– “do end” para blocos com mais de uma
linha Para criar métodos que recebam blocos,
use a instrução yield no corpo do método
44
Ruby – Blocks (Cont)
45
Ruby – Blocks (Cont)
46
Ruby – Blocks (Cont)
47
Ruby – Modules
Módulos seguem o mesmo padrão de classes, exceto:– Não possui instâncias– Não possui subclasses
Um módulo serve como uma localização central para que sejam agregados métodos e constantes
48
Ruby – Modules (Cont)
Módulos em Ruby são utilizados para dois propósitos básicos:– Permitir que seja definido um método
que não entre em conflito com outro já definido com mesmo nome
– Compartilhar funcionalidades entre classes (pseudo herança múltipla)
49
Ruby – Modules (Cont)
50
Ruby – Modules (Cont)
51
Ruby – Modules (Cont)
52
Ruby – Modules (Cont)
53
Ruby – Modules (Cont)
54
Ruby – RubyGems
É um sistema de gerenciamento de bibliotecas em Ruby
A bibliotecas são disponibilizadas no formato .gem
Resolução de dependências Várias versões da mesma gem no sistema Maneira recomendada de instalar
bibliotecas (inclusive o Rails)– gem install rails
55
II - Conhecendo Rails
Allisson Azevedo - http://allisson.eti.br
56
Histórico Desenvolvimento Web
Começo: Páginas estáticas 1993: Common Gateway Interface 1995: PHP 1996: ASP 1997: Java Servlet 1.0 2002: .Net 2004: Ruby on Rails
57
37 Signals
Jason Fried David Heinemeier Hansson Basecamp Getting the real
– Less is more
58
Ruby on Rails
Framework para desenvolvimento web– Full stack
Full stack vs Glue Criado por David Heinemeier Hansson
(2004) Extraído do aplicativo Basecamp MVC (Model-View-Controller) Código aberto, sem restrições
59
Ruby on Rails - Releases
2005: 1.0.0 2006: 1.1.0 2007:
– 1.2.0– 2.0.0
2008: 2.1.0
60
Rails - Conceitos
MVC– Model
Regras de negócio (persistência de dados)
– View Interação com usuário (templates
renderizados para html)– Controller
Controle da lógica e fluxo de dados
61
Rails – Conceitos (Cont)
DRY (Don't repeat yourself)– Desconfie se estiver utilizando o copiar
e colar em excesso Testing
– Suíte de testes integrada– Ideal 100% de cobertura de testes
Abstração utilizando código Ruby– SQL– Javascript
62
Rails – Conceitos (Cont)
Convention over configuration– Utilize as convenções e esqueça
configuração– Menos código– Menos erros– Mais fácil de manter
63
Rails – Funcionamento
64
Rails – Pacotes
O Rails é composto de um série de pacotes (frameworks)
Cada pacote resulta em um .gem separado
Pacotes– ActionMailer, ActionPack, ActiveRecord,
ActiveSupport e ActiveResource
65
Rails – ActionMailer
Responsável pelas tarefas relacionadas a envio e recebimento de emails
66
Rails – ActionPack
É composto de duas partes: ActionController
– Responsável pela lógica/fluxo de dados ActionView
– Responsável pela interação com usuário (html, css, ajax)
67
Rails – ActiveRecord
É o ORM (object-relation mapping) do Rails
Conecta as regras de negócios com banco de dados– Persistência de dados– Create– Read– Update– Delete/Destroy
68
Rails – ActiveRecord (Cont)
Migrations– Permite que mudanças em tabelas de
banco de dados sejam geridas por código RubyFacilidade Independência
69
Rails – ActiveSupport
Coleção de várias bibliotecas que servem de apoio para o Rails– Operações com datas– Timezone– Json– Etc
70
Rails – ActiveResource
Consome webservices no padrão REST– Atua como um ORM para webservices
REST
71
Rails – Plugins
Permitem adicionar novas funcionalidades a um projeto Rails
Muitos plugins disponíveis (>800)– acts_as_taggable_on_steroids– will_paginate– restful_authentication– attachment_fu– brazilian_rails
72
Rails – Rake
Programa responsável por executar tarefas pré-definidas– Criar e modificar tabelas com
migrations– Rodar suíte de testes– Etc
73
Rails – Estrutura de diretório
74
III - Desenvolvendo em Rails
Allisson Azevedo - http://allisson.eti.br
75
Instalação - Windows
One-Click Installer– http://rubyforge.org/projects/rubyinstaller/– Ruby, RubyGems, etc
Instant Rails– http://instantrails.rubyforge.org/– Ruby, Rails, RubyGems, Apache,
MySQL, etc
76
Instalação - Linux
Fedora:– yum install ruby ruby-devel ruby-irb ruby-
rdoc ruby-ri rubygems Ubuntu:
– sudo apt-get install ruby rdoc irb libyaml-ruby libzlib-ruby ri libopenssl-ruby ruby1.8-dev build-essential rubygems
77
Instalação – Rails
É recomendável usar o RubyGems para instalar o rails– gem install rails -y
78
Instalação – Adaptadores BD
Depois é preciso instalar a biblioteca para interação com seu banco de dados
Sqlite3: gem install sqlite3-ruby– Instalar o pacote de desenvolvimento do
sqlite antes MySQL: gem install mysql
– Instalar o pacote de desenvolvimento do mysql antes
79
Instalação – Mongrel
Servidor http que roda sobre o Rails Muito superior ao servidor http padrão
(webrick) gem install mongrel
80
Editor de código
Netbeans 6 Aptana RadRails Qualquer editor simples com syntax
highlight:– Gedit– Vim– Notepad++
81
Iniciando um projeto
Sempre do mesmo jeito– rails projeto (Sqlite)– rails projeto -d mysql
82
Demonstração
Mão na massa!
83
IV - Deployment de Rails
Allisson Azevedo - http://allisson.eti.br
84
O que é deployment?
É o trabalho necessário para publicar o código fonte do seu website em ambiente de produção– Botar no ar!
85
Deployment - Arquitetura
É preciso pensar em uma arquitetura de deployment que permita que o aplicativo “escale”– Escalabilidade vs Performance– Polêmica do Twitter
Rails escala?
86
Deployment – Arquitetura (Cont)
87
Deployment - 2005
Proxy reverso– Apache
WebApp– Rails + LightTPD
FastCGI Database
– MySQL
88
Deployment – 2005 (Cont)
89
Deployment - Atualmente
Proxy reverso– Nginx, Apache
WebApp– Rails + Mongrel
HTTP Database
– MySQL + MEMCACHED
90
Deployment – Atualmente (Cont)
91
Deployment - Capistrano
Automatiza tarefas via SSH em servidores remotos– Instalação de software– Deployment de aplicações– Gerenciamento de configuração
Feito em Ruby Programável em Ruby
92
Deployment – Capistrano (Cont)
93
Deployment - Monit
Utilitário para monitorar processos, arquivos, diretórios e filesystem de sistemas UNIX
Monitorar o mongrel– Evitar consumo excessivo de memória
Se passar de certo consumo, reinicie o processo
94
Deployment – Fusion Passenger
mod_rails A grande novidade em deployment no
mundo Rails Funcionamento semelhante ao mod_php
– Popularização em shared hostingsSubstituto do FastCGI
– Apenas upload dos arquivos para funcionar
95
V – Futuro do Rails
Allisson Azevedo - http://allisson.eti.br
96
JRuby
Implementação de Ruby em Java Versão atual: 1.1.3 Rails funcionando na JVM
97
IronRuby
Implementação do Ruby em .Net Ainda em beta Passou em cerca de 71% dos testes para
rodar Rails
98
Rubinius
É uma nova VM para Ruby Compatível com MRI (Matz Ruby
Interpreter) Ainda em beta
99
Influência do Rails
100
Influência do Rails (Cont)
101
Influência do Rails (Cont)
102
Influência do Rails (Cont)
103
Sites Feitos em Rails
104
Sites Feitos em Rails (Cont)
105
Sites Feitos em Rails (Cont)
106
Sites Feitos em Rails (Cont)
107
Sites Feitos em Rails (Cont)
108
Sites Feitos em Rails (Cont)
109
Sites Feitos em Rails (Cont)
110
Sites Feitos em Rails (Cont)
111
Sites Feitos em Rails (Cont)
112
Desafios
Ruby– Melhora de performance
Rails– Deployment mais simples
113
Obrigado!
http://allisson.eti.br allisson@gmail.com
top related