Upload
thiago-cifani
View
1.259
Download
2
Embed Size (px)
DESCRIPTION
palestra sobre ruby on rails na veiga cabo frio dia 5 de novembro de 2009.
Citation preview
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?