Class: ImageOptim::Railtie

Inherits:
Rails::Railtie
  • Object
show all
Defined in:
lib/image_optim/railtie.rb

Overview

Adds image_optim as preprocessor for gif, jpeg, png and svg images

Constant Summary collapse

MIME_TYPES =
%w[
  image/gif
  image/jpeg
  image/png
  image/svg+xml
].freeze

Instance Method Summary collapse

Instance Method Details

#default_options(app) ⇒ Object



53
54
55
56
57
58
59
60
61
62
63
# File 'lib/image_optim/railtie.rb', line 53

def default_options(app)
  config_path = app.config.paths['config'].first
  tmp_path = app.config.paths['tmp'].first
  {
    :config_paths => [
      "#{config_path}/image_optim.yml",
      "#{config_path}/image_optim/#{Rails.env}.yml",
    ],
    :cache_dir => "#{tmp_path}/cache/image_optim",
  }
end

#optimize_image_data(data) ⇒ Object



65
66
67
# File 'lib/image_optim/railtie.rb', line 65

def optimize_image_data(data)
  @image_optim.optimize_image_data(data) || data
end

#options(app) ⇒ Object



45
46
47
48
49
50
51
# File 'lib/image_optim/railtie.rb', line 45

def options(app)
  if app.config.assets.image_optim == true
    default_options(app)
  else
    app.config.assets.image_optim || default_options(app)
  end
end

#register_preprocessor(app, &processor) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/image_optim/railtie.rb', line 69

def register_preprocessor(app, &processor)
  MIME_TYPES.each do |mime_type|
    if app.assets
      app.assets.register_preprocessor mime_type, :image_optim, &processor
    else
      app.config.assets.configure do |env|
        if Sprockets::Processing.instance_method(:register_config_processor).arity == -3
          env.register_preprocessor mime_type, &processor
        else
          env.register_preprocessor mime_type, :image_optim, &processor
        end
      end
    end
  end
end