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
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])