Ruby Masters Conf
Abraç
o
Fala Pessoal nada como entrar o ano com um bom encotro de Ruby.
2 dias de Paletras !!!
http://rubymastersconf.com/
entre e Faça sua inscricao .
E ajude a Divulgar .
Os números de 2010
Os duendes das estatísticas do WordPress.com analisaram o desempenho deste blog em 2010 e apresentam-lhe aqui um resumo de alto nível da saúde do seu blog:

O Blog-Health-o-Meter™ indica: Este blog está em brasa!.
Números apetitosos

Um duende das estatísticas pintou esta imagem abstracta, com base nos seus dados.
Um Boeing 747-400 transporta 416 passageiros. Este blog foi visitado cerca de 1,600 vezes em 2010. Ou seja, cerca de 4 747s cheios.
Em 2010, escreveu 10 novos artigos, nada mau para o primeiro ano! Fez upload de 6 imagens, ocupando um total de 12mb.
The busiest day of the year was 10 de dezembro with 168 views. The most popular post that day was O Comovente guia de Ruby do Why em PDF.
De onde vieram?
Os sites que mais tráfego lhe enviaram em 2010 foram nomedojogo.com, forum.rubyonbr.org, Google Reader, google.com.br e orkut.com.br
Alguns visitantes vieram dos motores de busca, sobretudo por rails has_many, has_many rails, has_many, pesquisa dinamica rails e mairon brasil
Atracções em 2010
Estes são os artigos e páginas mais visitados em 2010.
O Comovente guia de Ruby do Why em PDF dezembro, 2010
13 comentários e 1 “Like” no WordPress.com,
relacionamento has_many fevereiro, 2010
3 comentários
Busca Dinamica AJAX + Ruby on Rails agosto, 2010
Boas Praticas Ruby on Rails setembro, 2010
5 comentários
recursos rails simples assim “count,sum,minimum,maximum,average” maio, 2010
Paraná on Rails (cidades sede)
Fala Pessoal,estamos correndo a tras para no ano de 2011 fazer acontecer o Parana on Rails.
Mas para isso gostarias de saber qual cidade seria a melhor opcao .
acesse o link e nos ajude a fazer esse grande evento virar realidade .
e qualquer sugestao ou ideia manda postem ai
abraco.
O Comovente guia de Ruby do Why em PDF
Pessoal esta ai em PDF o livro que foi traduzido Pelo Carlos Brando do Blog o Nome Do Jogo e mais uma super equipe .
que esta neste link aqui (O comevente guia de Ruby do Why)
O Carlos Brando me ajudou a desenvolver esse material espero que seja bastante ultil.
qualquer problema ou erro postem ai para eu estar arrumando e atualizado o aquivo.
Valeu ate a proxima…
Boas Praticas Ruby on Rails
Fala galera hoje vou abordar um assunto bastante interessante simples porem eficiente ![]()
Seu você usa o scaffold por padrão o seu método index no controller vem mais ou menos assim
def index @produtos = Produto.find(:all) end
em SQL isso significa ( SELECT * FROM PRODUTOS )
Um comando muito poderoso.
Agora pensamos assim essa classe produtos tem muitos detalhes (id,nome,categoria,codigo,codigo_fabricante,custo,referencia,codigo_barra,,, )
e que você tem muitos produtos,Pense no seu SELECT trazendo tudo isso em uma pancado só, Meus Deus…
Primeiro o usuário não vai e não tem o poder de ver todos os produtos ao mesmo tempo, ai começamos a usar nossas boas praticas,
uma delas seria criar uma busca pelos produtos filtrando por nome ou por categoria isso ja evitaria uma super consulta SQL,
outra seria uma paginação o Rails tem um gem chamado will_paginate fantástico e muito simples, e com essas duas opções ainda no podemos usar mais uma boa pratica que seria selecionar somente as colunas necessárias algo tipo
def index @produtos = Produto.all(:select => 'id,nome,referencia,codigo_barra') end
Em SQL seria algo com ( SELECT id,nome,referencia,codigo_barra FROM PRODUTOS )
Polpamos consultas desnecessária pode ter certeza que você já ganhou uns ms a mais
Isso tudo são detalhes mas pode ter certeza que vão fazer muita diferença no desempenho do seu projeto.
Fica ai dica um abraco ate a próxima e pratique essas ideia .
>>> DRY>>>
Busca Dinamica AJAX + Ruby on Rails
Opa hoje vou falar de um assunto super eficaz uma busca onde onde vc vai digitando e ele vai filtrando as infomacoes para você
vamos la então
vamos começar criando um arquivo na sua view bem simples chamado busca_index.erb
vamos criar uma routs
projeto/config/routes.rb
o nome da minha tabela eh produtos dai fica algo assiminfomacoes
ActionController::Routing::Routes.draw do |map|
map.resources :produtos, :collection => {:busca_index => :get};
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
end
dai vamos criar um method no nosso controller
app/controllers/produtos_controller.rb
def busca_index
@produtos = CompraProduto.find(:all, :conditions => ["produto LIKE ?","%#{params[:busca]}%"])
end
agora vamos editar nossa view index busca_index
primeiro nossa index
vamos dar uma limpada e deixar somente o form da busca
algo tipo
<h1>Listing compra_produtos</h1> <%form_tag busca_index_produtos_path, :method => "get" do%> <input id="busca" name="busca" type="text" onKeyUp="pesquisa(this.value)"/> <%=submit_tag "Buscar"%> <% end %>
criei uma input html mesmo usando uma função javascript (OnKeyUp)
agora que vem a parte mais interessante
nessa view mesmo vamos criar um tag script para por nosso javascript e nosso ajax
vamos la, vai ficar algo assim.
<script>
function pesquisa(valor)
{
//FUNÇÃO QUE MONTA A URL E CHAMA A FUNÇÃO AJAX
//aqui ele vai montando a busca
url="/compra_produtos/busca_index?busca="+valor+"&commit=Buscar";
ajax(url);
}
function ajax(url)
{
//alert(nick);
//alert(dest);
//alert(msg);
req = null;
// Procura por um objeto nativo (Mozilla/Safari)
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.onreadystatechange = processReqChange;
req.open("GET",url,true);
req.send(null);
// Procura por uma versão ActiveX (IE)
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = processReqChange;
req.open("GET",url,true);
req.send();
}
}
}
function processReqChange()
{
// apenas quando o estado for "completado"
if (req.readyState == 4) {
// apenas se o servidor retornar "OK"
if (req.status ==200) {
// procura pela div id="pagina" e insere o conteudo
// retornado nela, como texto HTML
document.getElementById('pagina').innerHTML = req.responseText;
} else {
alert("Houve um problema ao obter os dados:n" + req.statusText);
}
}
}
</script>
agora vamos mexer no nosso arquvo busca_index
<table> <tr> <th>Compra</th> <th>Produto</th> <th>Valor</th> </tr> <% for compra_produto in produtos %> <tr> <td><%=h compra_produto.compra_id %></td> <td><%=h compra_produto.produto %></td> <td><%=h compra_produto.valor %></td> <td><%= link_to 'Show', compra_produto %></td> <td><%= link_to 'Edit', edit_compra_produto_path(compra_produto) %></td> <td><%= link_to 'Destroy', compra_produto, :confirm => 'Are you sure?', :method => :delete %></td> </tr> <% end %> </table>
bem secao heheh e para finalizar adcinar na view index a div pagina assim
<h1>Listing compra_produtos</h1>
<%form_tag busca_index_compra_produtos_path, :method => "get" do%>
<input id="busca" name="busca" type="text" onKeyUp="pesquisa(this.value)"/>
<%=submit_tag "Buscar"%>
<% end %>
<div id="pagina">
</div>
<script>
function pesquisa(valor)
{
//FUNÇÃO QUE MONTA A URL E CHAMA A FUNÇÃO AJAX
url="/compra_produtos/busca_index?busca="+valor+"&commit=Buscar";
ajax(url);
}
function ajax(url)
{
//alert(nick);
//alert(dest);
//alert(msg);
req = null;
// Procura por um objeto nativo (Mozilla/Safari)
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.onreadystatechange = processReqChange;
req.open("GET",url,true);
req.send(null);
// Procura por uma versão ActiveX (IE)
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = processReqChange;
req.open("GET",url,true);
req.send();
}
}
}
function processReqChange()
{
// apenas quando o estado for "completado"
if (req.readyState == 4) {
// apenas se o servidor retornar "OK"
if (req.status ==200) {
// procura pela div id="pagina" e insere o conteudo
// retornado nela, como texto HTML
document.getElementById('pagina').innerHTML = req.responseText;
} else {
alert("Houve um problema ao obter os dados:n" + req.statusText);
}
}
}
</script>
e ta pronto desculpem a falta de detalhes mas qualquer duvida só postar ai beleza, valeu galera ate a próxima abraco
>>>> DRY >>>
time_ago_in_words
Hoje um cliente me pedio uma tema super interessante onde eu precisava mostrava quantos dias ja estava cadastrado o pagamento de um cliente
em fim dei uma pesquisa e achei a seguinte solucao
time_ago_in_words
como usar ???????
simples assim se vc usa o scaffond o rails ja cria um campo no banco de dados chamado created_at do tipo timestamp without time zone
onde ele te data e hora que foi feito um insert em fim
criei esse campo
e na minha index de clientes eu so imprimi assim
<%= time_ago_in_words(cliente.created_at) %>
e ele me da certinho os dias em que foi feito esse insert,
muito bacana a forma que ele trabalha
fica ai a dica ….
abraco
Sul On Rails
Fique sabendo hoje que o pessoal esta se agilizando para promover esse evento e eu como um bom paranaense e louco por rails nao podia ficar fora dessa.
Se alguem souber mais infomacoes e tiver alguma ideia deixa um post ai vamos fazer acontecer essa ideia.
link do forum ruby on rails onde tem mais informacoes
http://forum.rubyonbr.org/forums/4/topics/3063?page=1#posts-29691
abraco
recursos rails simples assim “count,sum,minimum,maximum,average”
muitas vezes vc precisa contar todos registros que vc tem no seu listado ou somalos pegar o menos ou maior e dar a diferenca
em RoR eh super simples
<% @user = User.count.all %>
e imprime a variavel no lugar desejado
<%= @user %>
da para por direto na view tambem
simples assim
<%= @user = User.count%>
o “=” no comeco eh usando para imprimir.
a mesma coisa com os outros
<%= @user = User.sum(:valor) %>
<%= @user = User.minimum(:valor) %>
<%= @user = User.maximum(:valor) %>
<%= @user = User.average(:valor) %>
Agora vamos dizer que vc precise somar quantos usuarios se chamao joao
como fazer isso ???
eh soh passar um conditions mais ou menos assim
<%= @user = User.count( :conditions => [" name = 'joao' " ] )%>
simples assim
Pratique essa ideia
>>>> DRY>>>
ruby on rails vs php
os caras nao perdoam !!!
mas nao foge muito realidade heheeh!!!
