Palestra Desenvolvimento Ágil para Web com ROR UVA

75
Desenvolvimento Ágil para Web com Ruby on Rails

description

palestra sobre ruby on rails na veiga cabo frio dia 5 de novembro de 2009.

Transcript of Palestra Desenvolvimento Ágil para Web com ROR UVA

Page 1: Palestra Desenvolvimento Ágil para Web com ROR UVA

Desenvolvimento Ágil para Web com Ruby on Rails

Page 2: Palestra Desenvolvimento Ágil para Web com ROR UVA
Page 3: Palestra Desenvolvimento Ágil para Web com ROR UVA

Release público em 1995

Ruby is designed to make programmers happy

Ruby

Page 4: Palestra Desenvolvimento Ágil para Web com ROR UVA

2000 – Ocidente

PragDave

Page 5: Palestra Desenvolvimento Ágil para Web com ROR UVA

Ruby

● Melhor amigo do desenvolvedor● Legível e Humana● Perl, Smalltalk, Ada e LISP● Orientada a Objetos● Extremamente Flexível

Page 6: Palestra Desenvolvimento Ágil para Web com ROR UVA

Características do Ruby

● A sintaxe é enxuta● Tudo é objeto● Geração de código em tempo real● Fortemente Tipada● Tipagem dinâmica● Closures Reais

Page 7: Palestra Desenvolvimento Ágil para Web com ROR UVA

Características do Ruby

● Classes abertas● Garbage Collector● Multi-plataforma● Herança Simples

Page 8: Palestra Desenvolvimento Ágil para Web com ROR UVA

Vantagens

● Memoria controlada automaticamente● Linguagem humana● Simplicidade● Tipagem Dinâmica● Extensibilidade● simbolos

Page 9: Palestra Desenvolvimento Ágil para Web com ROR UVA

Desvantagens

● Maquina Virtual Lenta (1.8)● Matemática Intensa – Estatísticas e fins cientificos

● Threading – Green Threading/ melhora no ruby 1.9 (jruby)

Page 10: Palestra Desenvolvimento Ágil para Web com ROR UVA
Page 11: Palestra Desenvolvimento Ágil para Web com ROR UVA

Instalando Ruby

● Ubuntu - sudo apt-get install ruby irb

● Windows - http://rubyforge.org/projects/rubyinstaller/

● easyrails

Page 12: Palestra Desenvolvimento Ágil para Web com ROR UVA
Page 13: Palestra Desenvolvimento Ágil para Web com ROR UVA

Escopo Variáveis

● thiago – variavel local● @thiago – variavel de instancia● @@thiago – variavel de classe● $thiago – variavel global

Page 14: Palestra Desenvolvimento Ágil para Web com ROR UVA

Classes em Ruby

class Personagem

def initialize(tipo, nome) @tipo = tipo @nome = nome end

end

Page 15: Palestra Desenvolvimento Ágil para Web com ROR UVA

Classes em Ruby

thiago = Personagem.new(:ator, "Thiago Cifani")

marano = Personagem.new(:revisor, "Thiago Marano")

Page 16: Palestra Desenvolvimento Ágil para Web com ROR UVA

Classes em Ruby

def to_s "#{@nome} é um #{@tipo}"end

Page 17: Palestra Desenvolvimento Ágil para Web com ROR UVA

Classes em Ruby

def nome @nomeend

def tipo @tipoend

def nome=(value) @nome = value end

def tipo=(value) @tipo = valueend

Page 18: Palestra Desenvolvimento Ágil para Web com ROR UVA

Classes em Ruby

attr_accessor :nome, :tipo

Page 19: Palestra Desenvolvimento Ágil para Web com ROR UVA

Controle de Acesso

class Test

public

def method1

end

protected

def method2

end

private

def method3

end

end

class Test

def method1

end

def method2

end

def method3

end

public :method1

protected :method2

private :method2

end

Page 20: Palestra Desenvolvimento Ágil para Web com ROR UVA

Herança Simples

class B < Aend

Page 21: Palestra Desenvolvimento Ágil para Web com ROR UVA

Livros OpenSource

● http://aprendaaprogramar.rubyonrails.pro.br/● http://why.nomedojogo.com/

Page 22: Palestra Desenvolvimento Ágil para Web com ROR UVA

try { BufferedReader in = new BufferedReader(new FileReader("nome do arquivo")); String str; while (in.ready()) { str = in.readLine(); process(str); } in.close(); } catch (IOException e) { }

teste = File.readlines("/home/thiagocifani/Documentos/txt.txt")puts teste

Page 23: Palestra Desenvolvimento Ágil para Web com ROR UVA

DEMO

Page 24: Palestra Desenvolvimento Ágil para Web com ROR UVA

DHH 2004

Page 25: Palestra Desenvolvimento Ágil para Web com ROR UVA
Page 26: Palestra Desenvolvimento Ágil para Web com ROR UVA

BaseCamp

Page 27: Palestra Desenvolvimento Ágil para Web com ROR UVA
Page 28: Palestra Desenvolvimento Ágil para Web com ROR UVA

Rails: o que é ?

Framework baseado em Ruby que facilita o desenvolvimento web, fazendo-o com agilidade e

produtividade

Page 29: Palestra Desenvolvimento Ágil para Web com ROR UVA
Page 30: Palestra Desenvolvimento Ágil para Web com ROR UVA
Page 31: Palestra Desenvolvimento Ágil para Web com ROR UVA
Page 32: Palestra Desenvolvimento Ágil para Web com ROR UVA

“Eles servem mais de 23 milhões de visitantes por mês. A conversão resultou em 20 mil linhas de Ruby ao invés de 120 mil linhas de Java, e mais importante,Facilitou a dificuldade que tinham com manutenção. Eles também finalizaram a escrita do programa com apenas 3 meses com 4 desenvolvedores. Uma vez completo e otimizado o site deles é mais rapido do que antes.”

Page 33: Palestra Desenvolvimento Ágil para Web com ROR UVA

Rails instalação

● Sudo apt-get install rubygems● Sudo gem update –system● Sudo gem install rails

Page 34: Palestra Desenvolvimento Ágil para Web com ROR UVA

Rails - Filosofia

● Convention over Configuration● DRY - Don't repeat yourself● KISS – Keep it simple stupid● Diversão

Page 35: Palestra Desenvolvimento Ágil para Web com ROR UVA

Convention over Configuration

● Grande parte do desenvolvimento segue padrões de convenção.

● Ex.: Para o model venda, temos uma tabela no banco de dados chamada vendas.

● Resume-se em menos código e menos repetição.

Page 36: Palestra Desenvolvimento Ágil para Web com ROR UVA

Convention over Configuration

● Nomes de Arquivos● Nomes de Tabelas no BD● Mapeamentos● Chaves do BD● Nome das Classes● Ambientes

Page 37: Palestra Desenvolvimento Ágil para Web com ROR UVA

Don't Repeat Yourself

● Todo código gerado deve ficar apenas em um local, não deve haver repetição de código em outras áreas da aplicação.

● Ex.: Active Record – Não é necessário colocar os códigos de CRUD no modelo, nome das colunas, etc.

Page 38: Palestra Desenvolvimento Ágil para Web com ROR UVA

Don't Repeat Yourself

development: adapter: sqlite3 database: db/development.sqlite3 pool: 5 timeout: 5000test: adapter: sqlite3 database: db/test.sqlite3 pool: 5 timeout: 5000

production: adapter: sqlite3 database: db/production.sqlite3 pool: 5 timeout: 5000

Page 39: Palestra Desenvolvimento Ágil para Web com ROR UVA

Don't Repeat Yourself

● Gems● Plugins● Generators● Templates● Partials

Page 40: Palestra Desenvolvimento Ágil para Web com ROR UVA

Keep it Simple Stupid

● Simplicidade acima de tudo● Refatoração● Testes legíveis● Código enxuto

Page 41: Palestra Desenvolvimento Ágil para Web com ROR UVA

Comandos

● Scaffolding● Migrations● script/server● script/generate model / controller / view● rake

Page 42: Palestra Desenvolvimento Ágil para Web com ROR UVA

MVC

● Model - Parte da aplicação que faz ligação com o banco de dados.

● View – Interface com o usuário.● Controller – Responsável por receber as

requisições feitas pela aplicação e executar as ações necessárias para atender essas requisições. É onde definimos a lógica do funcionamento da aplicação.

Page 43: Palestra Desenvolvimento Ágil para Web com ROR UVA

REST

● Consiste em utilizar os métodos HTTP no lugar do nome das ações para rotear a ação correta dentro do Controller.

● Dependendo do método HTTP o Rails encaminha automaticamente para a ação correspondente dentro do Controller.

Page 44: Palestra Desenvolvimento Ágil para Web com ROR UVA

REST

● Solicitações com o método:● GET são encaminhadas para as ações

“index” e “show”● POST são encaminhadas para a ação

“create”● PUT são encaminhadas para a ação

“update”● DELETE são encaminhadas para a ação

“destroy”

Page 45: Palestra Desenvolvimento Ágil para Web com ROR UVA

Rotas

● Rails não trabalha com URLs bagunçadas e sim Rotas.

● Facilitação na leitura por engines de busca

http://www.torrentleech.org/details.php?id=188684

Page 46: Palestra Desenvolvimento Ágil para Web com ROR UVA

Facilidades

● Logs● Ajax● Javascript● Jquery● Prototype e Scriptaculous● HTML● Testes Automatizados

Page 47: Palestra Desenvolvimento Ágil para Web com ROR UVA

Facilidades

● TDD e BDD● Cucumber e Rspec● XP

Page 48: Palestra Desenvolvimento Ágil para Web com ROR UVA

Ferramentas Ágeis

● Github - Repositório● Integração contínua – Cruise Control● Deployment – Capistrano, Inploy (dcrec1)

Page 49: Palestra Desenvolvimento Ágil para Web com ROR UVA

Código PHP<? $email = $_POST['email']; $opcao = $_POST['opcoes'];

$db = mysql_connect("localhost","root", ""); $banco = mysql_select_db("teste",$db);

if($opcao == "cadastrar"){

$sql = mysql_query("INSERT INTO email (email) value ('$email')");

}else{

$sql = mysql_query("DELETE FROM email where email = '$email'");

}

?>

Page 50: Palestra Desenvolvimento Ágil para Web com ROR UVA
Page 51: Palestra Desenvolvimento Ágil para Web com ROR UVA
Page 52: Palestra Desenvolvimento Ágil para Web com ROR UVA
Page 53: Palestra Desenvolvimento Ágil para Web com ROR UVA

DEMO RAILS

Page 54: Palestra Desenvolvimento Ágil para Web com ROR UVA

Comunidade

Page 55: Palestra Desenvolvimento Ágil para Web com ROR UVA

or

Por akitaonrails

Page 56: Palestra Desenvolvimento Ágil para Web com ROR UVA
Page 57: Palestra Desenvolvimento Ágil para Web com ROR UVA
Page 58: Palestra Desenvolvimento Ágil para Web com ROR UVA
Page 59: Palestra Desenvolvimento Ágil para Web com ROR UVA
Page 60: Palestra Desenvolvimento Ágil para Web com ROR UVA
Page 61: Palestra Desenvolvimento Ágil para Web com ROR UVA
Page 62: Palestra Desenvolvimento Ágil para Web com ROR UVA

Dizem que rails é pouco usado!

Page 63: Palestra Desenvolvimento Ágil para Web com ROR UVA
Page 64: Palestra Desenvolvimento Ágil para Web com ROR UVA
Page 65: Palestra Desenvolvimento Ágil para Web com ROR UVA
Page 66: Palestra Desenvolvimento Ágil para Web com ROR UVA
Page 67: Palestra Desenvolvimento Ágil para Web com ROR UVA
Page 68: Palestra Desenvolvimento Ágil para Web com ROR UVA
Page 69: Palestra Desenvolvimento Ágil para Web com ROR UVA
Page 70: Palestra Desenvolvimento Ágil para Web com ROR UVA
Page 71: Palestra Desenvolvimento Ágil para Web com ROR UVA

Links

● http://www.nomedojogo.com/● http://akitaonrails.com/● http://blog.areacriacoes.com.br/● http://guides.rubyonrails.org/● http://ruby-doc.org/core/● http://aprendaaprogramar.rubyonrails.pro.br/●

Page 72: Palestra Desenvolvimento Ágil para Web com ROR UVA

@egenial@danielvlopes@AkitaOnRails

@tapajos@carlosbrando@thiagomarano

@fredmp

Page 73: Palestra Desenvolvimento Ágil para Web com ROR UVA

OBRIGADO!!

Page 74: Palestra Desenvolvimento Ágil para Web com ROR UVA

Perguntas?

Page 75: Palestra Desenvolvimento Ágil para Web com ROR UVA

@[email protected]/thiagocifani

slideshare.net/thiagocifani