lib/tasks/paperclip.rake in paperclip-3.4.2 vs lib/tasks/paperclip.rake in paperclip-3.5.0

- old
+ new

@@ -1,5 +1,7 @@ +require 'paperclip/tasks/attachments' + module Paperclip module Task def self.obtain_class class_name = ENV['CLASS'] || ENV['class'] raise "Must specify CLASS" unless class_name @@ -7,17 +9,27 @@ end def self.obtain_attachments(klass) klass = Paperclip.class_for(klass.to_s) name = ENV['ATTACHMENT'] || ENV['attachment'] - raise "Class #{klass.name} has no attachments specified" unless klass.respond_to?(:attachment_definitions) - if !name.blank? && klass.attachment_definitions.keys.map(&:to_s).include?(name.to_s) + + attachment_names = Paperclip::Tasks::Attachments.names_for(klass) + + if attachment_names.empty? + raise "Class #{klass.name} has no attachments specified" + end + + if !name.blank? && attachment_names.map(&:to_s).include?(name.to_s) [ name ] else - klass.attachment_definitions.keys + attachment_names end end + + def self.log_error(error) + $stderr.puts error + end end end namespace :paperclip do desc "Refreshes both metadata and thumbnails." @@ -29,13 +41,19 @@ klass = Paperclip::Task.obtain_class names = Paperclip::Task.obtain_attachments(klass) styles = (ENV['STYLES'] || ENV['styles'] || '').split(',').map(&:to_sym) names.each do |name| Paperclip.each_instance_with_attachment(klass, name) do |instance| - instance.send(name).reprocess!(*styles) + attachment = instance.send(name) + begin + attachment.reprocess!(*styles) + rescue Exception => e + Paperclip::Task.log_error("exception while processing #{klass} ID #{instance.id}:") + Paperclip::Task.log_error(" " + e.message + "\n") + end unless instance.errors.blank? - puts "errors while processing #{klass} ID #{instance.id}:" - puts " " + instance.errors.full_messages.join("\n ") + "\n" + Paperclip::Task.log_error("errors while processing #{klass} ID #{instance.id}:") + Paperclip::Task.log_error(" " + instance.errors.full_messages.join("\n ") + "\n") end end end end