Ebb - novo web server para Ruby
Ebb é um servidor web escrito em C com binding para Ruby (e, futuramente, Python), que pode ser utilizado com Rails e Merb, entre outros frameworks.
Seguindo a onda de melhorias em desempenho e facilidade de implantação que temos visto ultimamente no mundo dos frameworks web para Ruby (Thin, SwitchPipe), o desenvolvedor do Ebb afirma (e mostra benchmarks) que seu servidor é mais rápido que Mongrel e Thin.
Para instalar, basta o comando gem install ebb (assumindo que as dependências - glib-2.0 e pkg-config - estejam instaladas). Para testá-lo, vá até o diretório raíz de sua aplicação Rails e digite ebb_rails start. Em ambiente de desenvolvimento, pareceu bem rápido.
Problemas instalando o ImageMagick 6.3.9 no Linux?
Montando um novo ambiente de desenvolvimento (com Ubuntu 7.10), precisei instalar o RMagick 2.2.2 e o ImageMagick, do qual o primeiro depende. Tive alguns problemas e achei interessante registrar aqui para servir de referência caso alguém passe pelo mesmo.
Pelas buscas que fiz, algumas outras pessoas tiveram o mesmo problema a partir da versão 6.3.8 do ImageMagick em diversas distribuições Linux.
Para instalar, baixei o tarball do ImageMagick mais recente e segui os passos descritos em http://www.imagemagick.org/script/install-source.php#unix. Ao testar a instalação (digitando o comando display no terminal), recebi o seguinte erro:
error while loading shared libraries: libMagickCore.so.1: cannot open shared object file: No such file or
directory
O que acontece é que a instalação via make copia as bibliotecas utilizadas pelo ImageMagick para /usr/local/lib e, ao executar, o ImageMagick busca-as em /usr/lib. Provavelmente é um bug no script utilizado para compilar e instalar o ImageMagick. Para resolver o problema, fiz uma pequena “adaptação técnica”:
sudo cp /usr/local/lib/libMagick*.* /usr/lib
Desta forma, as bibliotecas ficarão no diretório em que o ImageMagick faz a busca. Não é a solução mais bonita do mundo, mas funcionou.
Se tiver alguma solução mais limpa, por favor, deixe um comentário.
Code smells
Você sabe o que é um “code smell“? Bem, mesmo sem saber a definição, são muito grandes as chances de que você já tenha se deparado com um.
Code Smell é um sintoma de que algo no código pode estar errado. Geralmente indica a necessidade de um refactoring ou de alteração estrutural da aplicação.
Alguns code smells muito comuns são:
- Lazy class - uma classe “burra”, ou seja, que faz muito pouco (os famosos BOs, TOs e etc, comuns no mundo Java);
- Feature envy - uma classe que utiliza excessivamente os serviços de outra;
- Contrived complexity - uso forçado de design patterns complexos onde não são necessários;
- Inappropriate intimacy - uma classe que depende de detalhes de implementação de outra.
E você, o que já viu por aí?
Veja também:
Code smells taxonomy
Refactoring.com
Controle de versões com Git
Git é o VCS criado por Linus Torvalds objetivando mais velocidade e eficiência. Atualmente é utilizado para manter o kernel do Linux.
Em seu último post, Fábio Akita falou sobre Git (e sobre o Thin, que também foi assunto mais cedo no Ruby Inside) e apontou um link com um guia que mostra como instalar e usar esse VCS. Ao instalar o Git no Ubuntu 7.10, no entanto, tive alguns problemas com dependências na compilação. Para resolver, tive que instalar alguns pacotes, desta forma:
sudo apt-get install libssl-dev sudo apt-get install curl sudo apt-get install libcurl4-openssl-dev
Agora tudo certo. Boa sorte.
Programming Beautiful Ruby on Rails Code
E. James O’Kelly iniciou, em seu blog RailsJitsu, uma série de artigos muito interessante sobre “beleza” no código Ruby. Até o momento foram escritas duas partes, a primeira mostrando algumas boas práticas e exemplos de refactoring, a segunda com ainda mais refactoring. Além de aprender um pouco com a experiência do autor, é bom dar uma lida nos comentários, onde desenvolvedores deixam outras boas dicas.
Links:
Programming Beautiful Ruby on Rails Code Part 1
Programming Beautiful Ruby on Rails Code Part 2
Dica: documentação local das gems instaladas
Toda vez que você instala uma gem, sua documentação é gerada no formato RDoc (a não ser que você deixe explícito que esta não deve ser gerada). Para usar essa documentação local, basta executar o seguinte comando:
gem server
Após isso, aponte seu browser para localhost, na porta 8808 e você poderá acessar a documentação de todas as gems instaladas.
Dica via AlternateIdea.
Dica: como listar todas as rotas de uma aplicação?
À medida que sua aplicação Rails cresce e mais recursos (e recursos aninhados) são adicionados, começa a ficar mais difícil se lembrar de todas as rotas.
Para ajudar nisso existe uma tarefa Rake que lista todas as rotas nomeadas (named routes), assim como o método HTTP, controller e action correspondentes a cada uma.
Para criar um arquivo com todas essas informações, basta executar o seguinte comando em um terminal:
rake routes > routes.txt
Dica via RailsJitsu.
Novo plugin para caching
Evan Weaver lançou hoje o Interlock, um plugin Rails para caching com eficiência ótima, segundo o próprio autor.
Evan afirmou estar usando o plugin em produção no site Chow já há seis semanas e observou ganhos de velocidade entre 3 a 4 vezes em controllers que já utilizavam cache_fu e Sphinx.
Interlock usa memcached. Veja a documentação.
Rails: guia para migrar para a versão 2.0
Ben Smith escreveu um pequeno guia para migração da versão 1.2.6 para a versão 2.0 do Rails. Ben também disponibilizou uma task Rake que verifica código obsoleto (deprecated) em uma aplicação Rails. Ben também escreveu sobre a criação de aplicações Rails compatíveis com o iPhone.
Outras boas fontes:
- Mini e-book em pdf “Rails2 PDF“, de Ryan Daigle, disponível no Peepcode.com. Comprei esse pdf e, assim como todo o material disponível no site, recomendo.
- Foi lançado em beta, pela Pragmatic Programmers, o livro Advanced Rails Recipes, que traz “receitas” para resolver casos comuns enfrentados por desenvolvedores experientes em Rails. Todas as receitas usam o Rails 2.0. O livro ainda está em beta e mais receitas serão adicionadas até o seu lançamento. Também já adquiri e recomendo.
Google libera API de gráficos
A Google liberou hoje sua API de gráficos. Para usá-la basta chamar uma URL passando alguns parâmetros e você recebe um gráfico pronto para mostrar.
Alguns exemplos (note que não linkei para imagens, estou chamando a API diretamente):
Documentação: http://code.google.com/apis/chart/