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