diff options
Diffstat (limited to 'vendor/plugins/paperclip/tasks/paperclip_tasks.rake')
| -rw-r--r-- | vendor/plugins/paperclip/tasks/paperclip_tasks.rake | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/vendor/plugins/paperclip/tasks/paperclip_tasks.rake b/vendor/plugins/paperclip/tasks/paperclip_tasks.rake deleted file mode 100644 index 23e4c11..0000000 --- a/vendor/plugins/paperclip/tasks/paperclip_tasks.rake +++ /dev/null | |||
| @@ -1,79 +0,0 @@ | |||
| 1 | def obtain_class | ||
| 2 | class_name = ENV['CLASS'] || ENV['class'] | ||
| 3 | raise "Must specify CLASS" unless class_name | ||
| 4 | @klass = Object.const_get(class_name) | ||
| 5 | end | ||
| 6 | |||
| 7 | def obtain_attachments | ||
| 8 | name = ENV['ATTACHMENT'] || ENV['attachment'] | ||
| 9 | raise "Class #{@klass.name} has no attachments specified" unless @klass.respond_to?(:attachment_definitions) | ||
| 10 | if !name.blank? && @klass.attachment_definitions.keys.include?(name) | ||
| 11 | [ name ] | ||
| 12 | else | ||
| 13 | @klass.attachment_definitions.keys | ||
| 14 | end | ||
| 15 | end | ||
| 16 | |||
| 17 | def for_all_attachments | ||
| 18 | klass = obtain_class | ||
| 19 | names = obtain_attachments | ||
| 20 | ids = klass.connection.select_values(klass.send(:construct_finder_sql, :select => 'id')) | ||
| 21 | |||
| 22 | ids.each do |id| | ||
| 23 | instance = klass.find(id) | ||
| 24 | names.each do |name| | ||
| 25 | result = if instance.send("#{ name }?") | ||
| 26 | yield(instance, name) | ||
| 27 | else | ||
| 28 | true | ||
| 29 | end | ||
| 30 | print result ? "." : "x"; $stdout.flush | ||
| 31 | end | ||
| 32 | end | ||
| 33 | puts " Done." | ||
| 34 | end | ||
| 35 | |||
| 36 | namespace :paperclip do | ||
| 37 | desc "Refreshes both metadata and thumbnails." | ||
| 38 | task :refresh => ["paperclip:refresh:metadata", "paperclip:refresh:thumbnails"] | ||
| 39 | |||
| 40 | namespace :refresh do | ||
| 41 | desc "Regenerates thumbnails for a given CLASS (and optional ATTACHMENT)." | ||
| 42 | task :thumbnails => :environment do | ||
| 43 | errors = [] | ||
| 44 | for_all_attachments do |instance, name| | ||
| 45 | result = instance.send(name).reprocess! | ||
| 46 | errors << [instance.id, instance.errors] unless instance.errors.blank? | ||
| 47 | result | ||
| 48 | end | ||
| 49 | errors.each{|e| puts "#{e.first}: #{e.last.full_messages.inspect}" } | ||
| 50 | end | ||
| 51 | |||
| 52 | desc "Regenerates content_type/size metadata for a given CLASS (and optional ATTACHMENT)." | ||
| 53 | task :metadata => :environment do | ||
| 54 | for_all_attachments do |instance, name| | ||
| 55 | if file = instance.send(name).to_file | ||
| 56 | instance.send("#{name}_file_name=", instance.send("#{name}_file_name").strip) | ||
| 57 | instance.send("#{name}_content_type=", file.content_type.strip) | ||
| 58 | instance.send("#{name}_file_size=", file.size) if instance.respond_to?("#{name}_file_size") | ||
| 59 | instance.save(false) | ||
| 60 | else | ||
| 61 | true | ||
| 62 | end | ||
| 63 | end | ||
| 64 | end | ||
| 65 | end | ||
| 66 | |||
| 67 | desc "Cleans out invalid attachments. Useful after you've added new validations." | ||
| 68 | task :clean => :environment do | ||
| 69 | for_all_attachments do |instance, name| | ||
| 70 | instance.send(name).send(:validate) | ||
| 71 | if instance.send(name).valid? | ||
| 72 | true | ||
| 73 | else | ||
| 74 | instance.send("#{name}=", nil) | ||
| 75 | instance.save | ||
| 76 | end | ||
| 77 | end | ||
| 78 | end | ||
| 79 | end | ||
