class Paperclip::PaperclipOptimizer

Public Class Methods

default_options() click to toggle source
# File lib/paperclip-optimizer/processor.rb, line 6
def self.default_options
  @default_options ||= ::PaperclipOptimizer::DEFAULT_OPTIONS
end
default_options=(new_options) click to toggle source
# File lib/paperclip-optimizer/processor.rb, line 10
def self.default_options=(new_options)
  @default_options = new_options
end

Public Instance Methods

make() click to toggle source
# File lib/paperclip-optimizer/processor.rb, line 14
def make
  src_path = File.expand_path(@file.path)

  if optimizer_options[:verbose]
    Paperclip.logger.info "optimizing #{src_path} with settings: #{optimizer_options.inspect}"

    old_stderr  = $stderr
    $stderr     = ::PaperclipOptimizer::StdErrCapture.new(Paperclip.logger)
  end

  begin
    image_optim           = ImageOptim.new(optimizer_options)
    compressed_file_path  = image_optim.optimize_image(src_path)
  ensure
    $stderr = old_stderr if optimizer_options[:verbose]
  end

  if compressed_file_path && File.exist?(compressed_file_path)
    return File.open(compressed_file_path)
  else
    return @file
  end
end

Protected Instance Methods

optimizer_options() click to toggle source
# File lib/paperclip-optimizer/processor.rb, line 40
def optimizer_options
  optimizer_global_options
    .deep_merge(optimizer_instance_options)
    .deep_merge(optimizer_style_options)
    .delete_if { |_key, value| value.nil? }
end

Private Instance Methods

optimizer_global_options() click to toggle source
# File lib/paperclip-optimizer/processor.rb, line 49
def optimizer_global_options
  self.class.default_options
end
optimizer_instance_options() click to toggle source
# File lib/paperclip-optimizer/processor.rb, line 53
def optimizer_instance_options
  instance_options = @attachment.options.fetch(:paperclip_optimizer, {})
  instance_options.respond_to?(:call) ? instance_options.call(@attachment) : instance_options
end
optimizer_style_options() click to toggle source
# File lib/paperclip-optimizer/processor.rb, line 58
def optimizer_style_options
  @options.fetch(:paperclip_optimizer, {})
end