Palestra Desenvolvimento Ágil para Web com ROR UVA

Post on 12-Nov-2014

1.259 views 2 download

Tags:

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

Desenvolvimento Ágil para Web com Ruby on Rails

Release público em 1995

Ruby is designed to make programmers happy

Ruby

2000 – Ocidente

PragDave

Ruby

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

Características do Ruby

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

Características do Ruby

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

Vantagens

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

Desvantagens

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

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

Instalando Ruby

● Ubuntu - sudo apt-get install ruby irb

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

● easyrails

Escopo Variáveis

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

Classes em Ruby

class Personagem

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

end

Classes em Ruby

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

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

Classes em Ruby

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

Classes em Ruby

def nome @nomeend

def tipo @tipoend

def nome=(value) @nome = value end

def tipo=(value) @tipo = valueend

Classes em Ruby

attr_accessor :nome, :tipo

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

Herança Simples

class B < Aend

Livros OpenSource

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

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

DEMO

DHH 2004

BaseCamp

Rails: o que é ?

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

produtividade

“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.”

Rails instalação

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

Rails - Filosofia

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

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.

Convention over Configuration

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

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.

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

Don't Repeat Yourself

● Gems● Plugins● Generators● Templates● Partials

Keep it Simple Stupid

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

Comandos

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

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.

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.

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”

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

Facilidades

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

Facilidades

● TDD e BDD● Cucumber e Rspec● XP

Ferramentas Ágeis

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

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'");

}

?>

DEMO RAILS

Comunidade

or

Por akitaonrails

Dizem que rails é pouco usado!

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/●

@egenial@danielvlopes@AkitaOnRails

@tapajos@carlosbrando@thiagomarano

@fredmp

OBRIGADO!!

Perguntas?

@thiagocifanicifani.thiago@gmail.comgithub.com/thiagocifani

slideshare.net/thiagocifani