debshots/lib/tasks/screenshots_to_paperclip.rake

39 lines
No EOL
1.3 KiB
Ruby

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