namespace :debshots do desc "Convert images from the original screenshots directory tree to paperclip-styled images" task :screenshots_to_paperclip => :environment do Rails.logger = Logger.new(STDOUT) # Rails.logger.level = Logger::INFO Rails.logger.level = Logger::DEBUG base_path = Rails.root.join('public') Rails.logger.info "Iterating over screenshots" Screenshot.all.each do |screenshot| path = File.join(base_path, screenshot.image_url(:large)) Rails.logger.info "- #{screenshot.id} (package: #{screenshot.package.name}) (path: #{path})" # Check that the file actually exists unless File.file? path Rails.logger.error "Screenshots not found at #{path}. Skipping." next end # Has the screenshot been migrated already? if screenshot.image.exists? Rails.logger.info "Screenshot already migrated. Skipping." next end File.open(path, 'rb') do |image_file| screenshot.image = image_file Rails.logger.debug "Adding image file: #{image_file}" unless screenshot.valid? Rails.logger.error "Adding image file failed. Errors: #{screenshot.errors[:image]}" end screenshot.save Rails.logger.debug "Screenshot object saved" end end end end