Module: EasyOptimise

Defined in:
lib/easy_optimise.rb,
lib/easy_optimise/version.rb

Constant Summary collapse

VERSION =
"0.1.0"
DATE =
"2015-09-25"

Class Method Summary collapse

Class Method Details

.extended(base) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/easy_optimise.rb', line 4

def self.extended(base)
  base.class_eval do
    def self.has_attached_optimised_file(name, options={})
      full_options = Marshal.load(Marshal.dump(options))

      unoptimised_styles = full_options.delete(:unoptimised_styles)
      full_options[:styles].update(unoptimised_styles) if unoptimised_styles

      has_attached_file(name, full_options)

      optimised_styles = (options[:styles])? options[:styles].keys : []

      optimised_styles.each do |style|
        self.send("after_#{name}_post_process", Proc.new {
          attachment = self.send(name)
          path = attachment.queued_for_write[style].path
          width = attachment.styles[style].geometry.split('x').first.to_i
          Paperclip.run('convert', "-filter Triangle -define filter:support=2 -thumbnail #{width} -unsharp 0.25x0.25+8+0.065 -dither None -posterize 136 -quality 82 -define jpeg:fancy-upsampling=off -define png:compression-filter=5 -define png:compression-level=9 -define png:compression-strategy=1 -define png:exclude-chunk=all -interlace none -colorspace sRGB -strip #{path} #{path}")
        })
      end
    end
  end
end