ruby, rails, linux, php, seo and ui
In: git
3 fev 2010Dica rápida
Para enviar um branch local para o servidor remoto, use o comando abaixo:
Já para deletar um branch remoto, é tão simples quanto:
PS. Não esqueça de deletar o branch local também, se for o caso:
Dica do git ready.
A Plataforma Tecnologia lançou recentemente o has_scope, plugin/gem extraÃdo do InheritedResources (o qual ainda não tive a capacidade de entender o funcionamento).
Ele permite criar filtros nas consultas usando os escopos (named_scopes) definidos no Model de uma forma simples e elegante, mantendo toda a lógica do negócio fora do Controller.
Vamos ao código:
No Model abaixo, implementei dois escopos que gostaria de usar para filtrar a consulta.
No Controller, defini quais escopos que vou usar no filtro.
Na View, criei uma partial com os campos do filtro.
Esse formulário do filtro irá chamar o método index usando GET (através da URL), como no exemplo:
Como de costume, esse post é só um aperitivo. Acesse o completÃssimo README no GitHub para mais detalhes de utilização.
In: ruby
27 out 2009O Ruby Learning começou uma série de desafios para Rubistas iniciantes, na qual um profissional Ruby elabora um problema e os interessados em participar enviam as soluções desenvolvidas em Ruby para serem avaliadas. O autor do desafio escolhe a melhor implementação e sorteia uma entre as outras soluções funcionais. Os premios são screencasts da PeepCode e BDDCasts.
Por que não participar?
O problema proposto pelo Chris Strom foi o seguinte:
Você deve um grande favor e concordou em pegar um amigo no aeroporto toda Sexta-feira a noite. A linha área que seu amigo voa é barata, mas terrÃvel quando se trata em reportar atrasos e horários de saÃda e chegada. Você rapidamente descobriu que o voos agendados para as 10pm nunca chegam no horário e usualmente atrasam mais de uma hora. Se o avião chegar as 11:15pm, 12:03am, 11:30pm, 11:23pm e 11:48pm, qual é o horário médio da chegada?
A solução funciona se seu amigo mudar o horário de chegada para 6 horas depois? E se for 12 horas depois?
A saÃda esperada do programa é a seguinte:
E qual foi a minha solução?
Eu identifiquei os seguintes passos a serem seguidos:
O código para essa implementação foi o seguinte:
Executando os testes propostos, tenho o resultado esperado. Woooo!
As soluções vencedoras foram:
UPDATE: o Chris Storm publicou um feedback sobre as soluções do teste. Leitura obrigatória.
Quando vamos criar uma aplicação Rails, normalmente executamos uma série de passos (instalação de plugins, gems, controllers, etc.) iguais. Por que não automatizar esse processo?
Usando o ótimo guia escrito pelo Nando Vieira sobre Rails Application Templates, escrevi o meu primeiro template:
Para usar o template, basta chama-lo durante a criação da aplicação com o parametro -m:
Esse template é bem simples e faz apenas o que eu uso sempre em todas as aplicações:
Pode melhorar esse script? Faça um fork no Github
Os que me conhecem sabe quanto o Rails Summit 2008 mudou a minha vida profissionalmente. Eu já sabia que as coisas haviam evoluÃdo mas sinceramente nunca tinha dado muita bola, pois os meus processos sempre funcionaram bem. Lá eu pude ver que muita coisa legal estava sendo feita e eu que não podia ficar de fora. Uma delas foi o deployment automatizado.
O Capistrano é uma RubyGem que permite que você escreva receitas para publicação em servidores web. É possÃvel usa-la integrada com o seu repositório (centralizado ou distribuÃdo) ou mesmo copiar-tudo-compactar-e-enviar automaticamente. Ele permite manter várias versões da aplicação no servidor (e fazer rollback se necessário) e utiliza links simbólicos para dizer qual delas é a atual.
A instalação é mais facil que fazer miojo:
É necessário ter o Ruby e o RubyGems instalado no seu sistema. Se você usa Ubuntu, eu posso ajudar.
Dentro do diretório do seu projeto, crie a estrutura basica do capistrano:
Notem que o arquivo config/deploy.rb foi criado. É nele que você irá escrever a sua receita.
Após estar com a receita devidamente escrita, é hora de configurar o servidor online para a estrutura do Capistrano.
O setup só precisa ser rodado uma única vez.
Depois de configurado, para publicar a sua aplicação basta fazer isso:
Mágico né?
Fez merda e publicou alguma coisa que não devia? Faça um rollback!
Algumas considerações sobre essa receita:
Se ficou interessado em usar o Capistrano para publicar a sua aplicação, sugiro fortemente que leia a documentação para maiores detalhes.
Ok, eu sei que usar cliente de FTP é coisa do passado, mas quem não tem um projeto sem o deployment automatizado que atire a primeira pedra.
Na versão 3.0.8 do Filezilla foi adicionado o suporte a chaves públicas nas conexões por SFTP. Com isso, podemos aproveitar a mesma chave que usamos para conectar sem senha por ssh para autenticar no cliente de FTP.


Comentei há alguns dias atrás no Twitter sobre um plugin para Rails que instalei na aplicação que desenvolvemos na Tecmedia: o asset_packager.
O objetivo deste plugin é reduzir o número de requisições e o tamanho dos assets(arquivos javascript e css) em aplicações Rails. Como a maioria das soluções, é quase mágico:
Gere o arquivo .yml com os assets a serem unificados e comprimidos:
Ele irá gerar uma estrutura semelhante a essa no arquivo config/asset_packages.yml, já com os assets que estão configurados no seu projeto:
E no seu layout, basta remover as chamadas antigas e colocar apenas:
Ele ainda tem a sacada de chamar os assets unificados somente em produção, evitando problemas de cache durante o desenvolvimento.
Na nossa aplicação, a redução em número de requisições foi de 22 para 12. Já em tamanho, a redução foi de 80kb.
Uma funcionalidade interessante do Rails que descobri através do RubyFlow foi o delegate.
No exemplo simples abaixo, mostra como mapear atributos de um model em outro.
E o que isso faz? Olhe abaixo:
Os atributos que foram declarados com delegate passam a responder como atributos do model Customer.
Sempre tive a necessidade de conectar em diversos servidores, todos com usuários e senhas diferentes. Cheguei até a ter um arquivo criptografado no Desktop com todos os usuários e senhas mais usados. Bobagem a minha.
Criando o diretório .ssh no servidor
Você já tem uma chave ‘rsa’? Então crie uma:
Agora basta enviar sua chave pública (id_rsa.pub) para o servidor:
E pronto! Quando você acessar novamente a sua conta por SSH, ele não pedirá mais senha.
Algumas pessoas perdem a noção e criam domÃnios gigantescos, aliados com polÃticas de criação de login dos provedores, está formado o inferno na hora de conectar um servidor.
Crie/edite o arquivo ‘~/.ssh/config’ com o seguinte conteúdo
Observem a diferença para conectar:
Bem melhor né?
Fontes:
Dica 1: http://wiki.locaweb.com.br/pt-br/Usando_GIT_na_Hospedagem_Linux
Dica 2: http://logbr.reflectivesurface.com/2009/06/04/reduzindo-nomes-no-git-e-ssh/
In: mobile
10 jul 2009No final do ano passado comprei o meu primeiro(e único até agora) smartphone: Nokia E71. Aparelho fantástico, não tenho do que reclamar (Ok, a camera não é fantástica).

Depois de testar muitos aplicativos, compilei minha lista de favoritos:
Espero que seja útil.
Ricardo Duarte, 26 anos, trabalha na Nuntec, atua como desenvolvedor web a mais de 12 anos, já tendo passado por diversas tecnologias. Este blog irá comentar um pouco destas experiências.