Sha256: 2882e599f546b3b29605cf19af14991189af97e8f243ae3257c1176a3a1d2a75

Contents?: true

Size: 1.6 KB

Versions: 3

Compression:

Stored size: 1.6 KB

Contents

class Premailer
  module Rails
    module CSSLoaders
      # Loads the CSS from cache when not in development env.
      module CacheLoader
        extend self

        def load(path)
          unless ::Rails.env.development?
            CSSHelper.cache[path]
          end
        end
      end

      # Loads the CSS from the asset pipeline.
      module AssetPipelineLoader
        extend self

        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

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

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

        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
      end

      # Loads the CSS from the file system.
      module FileSystemLoader
        extend self

        def load(path)
          File.read("#{::Rails.root}/public#{path}")
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
premailer-rails-1.4.0 lib/premailer/rails/css_loaders.rb
premailer-rails3-1.3.2 lib/premailer/rails/css_loaders.rb
premailer-rails-1.3.2 lib/premailer/rails/css_loaders.rb