We’re launching a new Facebook app soon at OnMyList, and we need to pre-populate hundreds of celebrity images, so instead of doing it manually I wrote a cute little rake task to do them all. Took me a little while to figure this out, the trick is to do a class_eval to add the required fields to make attachment_fu happy. This works pretty sweet, the images are resized and uploaded to Amazon S3.
Thought I’ll blog it hoping someone out there will find this useful.
desc 'adding celebs' task :add_celebs => :environment do dir = '/tmp/celeb_images' Dir.foreach(dir) do |img| path = File.join(dir, img) if File.file?(path) f = File.new(path, "r") (class < < f; self; end).class_eval do alias local_path path define_method(:original_filename) {img} define_method(:content_type) {"image/jpeg"} define_method(:size) { File.size(path) } end u = User.new u.celeb_name = File.basename(img, '.jpg').titleize u.picture = Picture.new u.picture.uploaded_data = f u.save! p "added user #{u.celeb_name}" end end end
Technorati Tags: attachment_fu, rails, rake task, RoR, ruby, rubyonrails







Leave a comment