lib/image_processing/chainable.rb
def apply(operations)
      operations.inject(self) do |builder, (name, argument)|
        if argument == true || argument == nil
          builder.send(name)
        elsif argument.is_a?(Array)
          builder.send(name, *argument)
        else
          builder.send(name, argument)
        end
      end
    end
def apply(operations)
      operations.inject(self) do |builder, (name, argument)|
        if argument == true || argument == nil
          builder.send(name)
        elsif argument.is_a?(Array)
          builder.send(name, *argument)
        else
          builder.send(name, argument)
        end
      end
    end
def apply ( operations ) operations . inject ( self ) do | builder , ( name , argument ) | if argument == true || argument == nil builder . send ( name ) elsif argument . is_a? ( Array ) builder . send ( name , argument ) else builder . send ( name , argument ) end end end
Add multiple operations as a hash or an array.

   .apply(resize_to_limit: [400, 400], strip: true)
   # or
   .apply([[:resize_to_limit, [400, 400]], [:strip, true])
Add multiple operations as a hash or an array .