Publicado por Rafael Rosa em 23 de March de 2010
Dragonfly – Um gerenciador de recursos diferente
Clique aqui para adicionar ao del.icio.us | Nenhum comentário - Deixe o seu agora!
A Dragonfly é uma gem para gerenciar recursos, como imagens e outros tipos de conteúdo em aplicações web feitas em Ruby, o que inclui Rails. Vocês vão dizer: “O que? Mais uma?!”.. Embora usar a Dragonfly com Rails seja parecido com utilizar o Paperclip, por exemplo, uma diferença importante é que com a Dragonfly, as imagens são geradas apenas quando solicitadas, e não quando é feito o upload. A princípio, isso pode não parecer importante, mas acaba criando várias novas possibilidades.
Para começar o tamanho dos thumbnails não são especificados nos modelos e sim nas view. Assim, quando o design muda, e isso afeta as imagens, só precisamos mudar as views. Com o modelo anterior precisariamos alterar o model, depois reprocessar todas as imagens. Além disso, com esse novo modelo é simples fazer avatares com croppings customizados para cada usuário, ou artigos de blog com imagens de diferentes tamanhos, etc. Isso seria difícil se os thumbnails só fossem criados no momento do upload.
Use o Rack
A Dragonfly não funciona apenas no Rails, mas com qualquer aplicação que utilize o Rack. Ela pode ser utilizada como uma aplicação Rack standalone, ou inserida como um middleware em qualquer stack Rack, como por exemplo, Sinatra, Merb, etc. Ela foi feita para ser usada com o Rails de maneira super fácil, então qualquer um que tenha usado o Paperclip ou ferramentas similares não terá problemas.
Custom and Excise
Você pode customizar data stores / processadores / encoders / analisadores, etc., que se adequem às suas necessidades. Ela foi planejada para ser o mais configurável possível, usando opções padrão sensatas para quem não quer perder tempo com configuração. Qualquer tipo de dado pode ser servido, não apenas imagens, ainda que nem todos se adequem perfeitamente ao sistema de geração "on-the-fly.
Cache
Ela foi feita para ser utilizada por trás de um cache-proxy como o Varnish, Squid ou Rack::Cache, para que apenas a primeira requisição demore mais para ser servida, e as outras se utilizem do cache e fiquem mais rápidas.
Vale a pena ler o artigo no blog da bamboo para ter uma introdução, ou então dê uma olhada no código-fonte e na documentação.


