Na semana passada postei sobre uma modificação no Paperclip para fazer Rounded Corners.
Bem, durante essa semana outro problema surgiu: miniaturas de arquivos PDF. Não sei se todos que usam Paperclip sabem, mas o ImageMagick gera miniaturas da primeira página.
Isso é bem legal e o melhor: tudo é feito automaticamente!
Motivação
Eu tinha o seguinte problema: o mesmo model gerenciava upload de imagens, e uma coisa não funciona com miniaturas de PDF: CROP.
Aviso
Quanto a geração de thumbnails do Paperclip oficial, é bom deixar bem claro: não funciona com PDF com mais de uma página! Se o seu PDF tem só uma página, irá funcionar perfeitamente.
Produzindo
Sendo assim, fiz algumas modificações para que quando uma miniatura de PDF fosse gerada o Paperclip removesse automaticamente a opção de Crop, para que a imagem fosse gerada sem maiores problemas.
Além disso corrigi um outro Bug que ocorria quando usava a opção rounded: todos os arquivos recebiam extensão .png, inclusive o arquivo original.
Resultado
O resultado foi o seguinte: 
Concluindo
Uma opção legal quando criamos sites que fornecem conteúdo em PDF como relatórios para clientes, manuais, livros e etc.
Baixe e dê uma olhada no resultado
Essa semana fiz um POG interessante.
O pessoal estava colocando um site no ar, e todas as fotos precisavam ter rounded corners (frescura de designer).
E queríamos usar Paperclip, mas como fazer o arredondamento?
Como Paperclip usa ImageMagick puro, apenas fiz algumas mudanças no comando que ele executa e o resultado até que surpreendeu. Ele gera um PNG. Não importa a imagem de origem. Se ela precisar de rounded corners, a imagem resultante será PNG, pois o fundo é transparente.
Ah sim, bom lembrar que o fundo é transparente, assim não ocorrem problemas com fundos com gradiente e etc.
Instalando
script/plugin install git://github.com/dookie/paperclip.git
Configurando
Então configure seu model como achar melhor, por exemplo:
class Photo < ActiveRecord::Base
has_attached_file :image,
:styles => { :thumb => "135x101#",
:original => '640x480' },
:rounded => 10
end
O valor do :rounded será o tamanho do arredondamento. No caso estou usando 10 que é um tamanho legal já.
Resultado
O resultado será parecido com este:

Agora é só usar o Paperclip como você sempre usou (espero que esteja usando, senão comece logo a usar!)
Se alguém quiser dar uma olhada no projeto: http://github.com/dookie/paperclip/tree/master.
E gostaria também de já agradecer ao Shadow (que ajudou no desenvolvimento) e ao Márcio Trindade (o autor da idéia)
Este é o meu primeiro post. Todo mundo começa falando coisas que não interessam no primeiro post, mas eu, no caso, vou comentar sobre uma GEM que estou desenvolvendo com o Alex Gregianin.
Knock Knock
Esta é uma GEM para fazer autenticação nos serviços que o Google oferece como
GMail,
Google Docs,
Google Calendar, usando o método
ClientLogin. Existem outros métodos como o AuthSub e OAuth mas a GEM trata somente o ClientLogin.
Instalando
A GEM está hospedada no RubyForge, então basta fazer:
sudo gem install knock-knock
Como usar?
Uma maneira simples de testar é pegando sua lista de contatos do GMail. O Google libera um XML contendo todas as informações e você pode fazer isso para pegá-los:
require 'rubygems'
require 'knock_knock'
include Bubble::KnockKnock
Connection.instance.connect('email@gmail.com', 'password', 'cp')
Request.get('http://www.google.com/m8/feeds/contacts/email%40gmail.com/full')
Como funciona?
O Connection faz a autenticação e pega o Token de acesso, necessário para utilizar as APIs que o Google oferece.
Note a sigla no final: “cp”, esta é a sigla para conseguir o Token do
Google Contacts. Para saber qual é a sigla para o serviço que você deseja basta consultar a
documentação da API.
O Request.get é responsável por fazer GET na URL desejada, utilizando o Token, e retornando o XML de resposta.
Concluindo
É bem fácil utilizar, e qualquer serviço do Google pode ser acessado com esta GEM. Há outros método HTTP contidos nesta GEM, dando oportunidade à diversas outras implementações com seus scripts, as possibilidades são infinitas.
Para mais informações:
Tags: apis, clientlogin, gem, google, rails, ruby.