Module: CarrierWave::Uploader::Processing::ClassMethods

Defined in:
lib/carrierwave/uploader/processing.rb

Instance Method Summary collapse

Instance Method Details

#process(*args) ⇒ Object

Adds a processor callback which applies operations as a file is uploaded. The argument may be the name of any method of the uploader, expressed as a symbol, or a list of such methods, or a hash where the key is a method and the value is an array of arguments to call the method with

Parameters

args (*Symbol, Hash=> Array[])

Examples

class MyUploader < CarrierWave::Uploader::Base

  process :sepiatone, :vignette
  process :scale => [200, 200]
  process :scale => [200, 200], :if => :image?
  process :sepiatone, :if => :image?

  def sepiatone
    ...
  end

  def vignette
    ...
  end

  def scale(height, width)
    ...
  end

  def image?
    ...
  end

end


56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/carrierwave/uploader/processing.rb', line 56

def process(*args)
  if !args.first.is_a?(Hash) && args.last.is_a?(Hash)
    conditions = args.pop
    args.map!{ |arg| {arg => []}.merge(conditions) }
  end

  args.each do |arg|
    if arg.is_a?(Hash)
      condition = arg.delete(:if)
      arg.each do |method, args|
        self.processors += [[method, args, condition]]
      end
    else
      self.processors += [[arg, [], nil]]
    end
  end
end