Archive for June, 2009

Paperclip: Atualizando imagens já cadastradas

June 18th, 2009

Seu projeto esta no ar, vários usuários utilizando e fazendo upload de imagens! Ótimo!!

Mas foi decidido que as imagens devem ter outros tamanhos, o que fazer com as imagens que já foram cadastradas? :(

Se você utiliza o plugin Paperclip, ele dispobilibiza algumas rake tasks para facilitar esse trabalho!

São elas:

# Atualiza as informações do banco de dados e os arquivos no 
# servidor de acordo com os styles definidos no model
rake paperclip:refresh CLASS=SeuModel
 
# Atualiza somente as informações do banco de dados
rake paperclip:refresh:metadata CLASS=SeuModel
 
# Atualiza somente os arquivos no servidor, seguindo os styles 
# definidos no model
rake paperclip:refresh:thumbnails CLASS=SeuModel

Simples e sem dor de cabeça :)

Populando banco de dados usando a gem Populator

June 13th, 2009

É preciso demonstrar uma funcionalidade da aplicação para o cliente, mas para isso é necessário realizar diversos cadastros e gerar informações na base de dados. Dependendo da quantidade de registros, fazer isso manualmente acaba ficando muito chato além de consumir um longo tempo.

Procurando uma maneira de automatizar esse processo, encontrei a gem Populator que facilita e muito esse trabalho.

Como Usar:

Primeiro instale a gem

sudo gem install populator

Após instalar, no console já podemos fazer algo como:

>> require 'populator'
=> []
>> Category.count
=> 0
>> Category.populate(10) { |category| category.name = Populator.words(1..3).titleize }
=> {}
>> Category.count
=> 10
>> Category.first
=> #<Category id: 1, name: "Fuga Debitis Temporibus", created_at: "2009-06-13 14:17:24", updated_at: "2009-06-13 14:17:24">
>>

Existem alguns metodos que podemos usar para gerar alguns dados como:

Populator.words(5) # gera 5 palavras aleatoriamente e insere um espaço entre elas
Populator.words(1..3) # gera entre uma e três palavras aleatoriamente
Populator.sentences(3) # gera 3 frases
Populator.paragraphs(2) # gera 2 paragrafos

Mas dependendo to tamanho de nosso model, ficar digitando tudo isso pelo console acaba dando muito trabalho também. Vamos melhorar isso!

Crie um novo arquivo em lib/tasks/populate.rake e crie a seguinte tarefa:

namespace :db do
  desc "Popula base de dados"
  task :populate => :environment do
 
    require 'populator'
 
    Category.populate 30 do |category|
      category.name = Populator.words(1..3).titleize
    end
 
  end
end

Agora dentro do diretório da aplicação, basta rodar a tarefa:

 rake db:populate 

Bem melhor :)

Podemos melhorar ainda mais este processo e deixar ele mais completo utilizando a gem Faker que gera dados como nome, telefone, endereço, e-mail e pode ser usada junto com a Populator.

Vale a pena assistir a este Railscast onde é demonstrado como utilizar as duas gems.

É isso ai! :D

AnnotateModels

June 12th, 2009

Precisa saber de forma rápida quais atributos um determinado model tem?

A gem AnnotateModels facilita este trabalho, adicionando em forma de comentários dentro do model, todos os seus atributos.

Como usar:

Primeiro instale a gem. No terminal digite:

sudo gem install annotate

Em seguida, acesse o diretório da aplicação e execute:

annotate

Veja como ficou nosso model:

# == Schema Information
#
# Table name: categories
#
# id :integer(4) not null, primary key
# name :string(255)
# description :text
# created_at :datetime
# updated_at :datetime
#
 
class Category < ActiveRecord::Base
  validates_presence_of :name
  validates_presence_of :description
end

Simples e bastante útil.