Module: PremailerRails::CSSLoaders::AssetPipelineLoader

Extended by:
AssetPipelineLoader
Included in:
AssetPipelineLoader
Defined in:
lib/premailer-rails3/css_loaders.rb

Overview

Loads the CSS from the asset pipeline.

Instance Method Summary collapse

Instance Method Details

#assets_enabled?Boolean



48
49
50
# File 'lib/premailer-rails3/css_loaders.rb', line 48

def assets_enabled?
  Rails.configuration.assets.enabled rescue false
end

#file_name(path) ⇒ Object



52
53
54
55
56
57
58
59
# File 'lib/premailer-rails3/css_loaders.rb', line 52

def file_name(path)
  if path == :default
    'email.css'
  else
    path.sub("#{Rails.configuration.assets.prefix}/", '') \
      .sub(/-.*\.css$/, '.css')
  end
end

#load(path) ⇒ Object



37
38
39
40
41
42
43
44
45
46
# File 'lib/premailer-rails3/css_loaders.rb', line 37

def load(path)
  if assets_enabled?
    file = file_name(path)
    if asset = Rails.application.assets.find_asset(file)
      asset.to_s
    else
      request_and_unzip(file)
    end
  end
end

#request_and_unzip(file) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/premailer-rails3/css_loaders.rb', line 61

def request_and_unzip(file)
  url = [
    Rails.configuration.action_controller.asset_host,
    Rails.configuration.assets.prefix.sub(/^\//, ''),
    Rails.configuration.assets.digests[file]
  ].join('/')
  response = Kernel.open(url)

  begin
    Zlib::GzipReader.new(response).read
  rescue Zlib::GzipFile::Error, Zlib::Error
    response.rewind
    response.read
  end
end