namespace :debshots do desc "Remove screenshot objects with non-existing images" task :remove_broken_screenshots => :environment do Rails.logger = Logger.new(STDOUT) Rails.logger.level = Logger::INFO #Rails.logger.level = Logger::DEBUG Rails.logger.info "Iterating over screenshots" # TODO: fix for Shrine - this only works for Paperclip Screenshot.all.each do |screenshot| # Check that the file actually exists path = screenshot.image.path(:large) # Rails.logger.info "- #{screenshot.id} (package: #{screenshot.package.name}) (path: #{path})" unless path and (File.file? path) Rails.logger.info "Screenshot #{screenshot.id} image file not found at path '#{path}'. Removing." screenshot.delete end end Rails.logger.info "Done." end end