Class: Sprockets::Utils::Gzip
Relationships & Source Files | |
Namespace Children | |
Modules:
| |
Inherits: | Object |
Defined in: | lib/sprockets/utils/gzip.rb |
Constant Summary
-
COMPRESSABLE_MIME_TYPES =
What non-text mime types should we compress? This list comes from: www.fastly.com/blog/new-gzip-settings-and-deciding-what-compress
{ "application/vnd.ms-fontobject" => true, "application/x-font-opentype" => true, "application/x-font-ttf" => true, "image/x-icon" => true, "image/svg+xml" => true }
Class Method Summary
-
.new(asset, archiver: ZlibArchiver) ⇒ Gzip
constructor
Private: Generates a gzipped file based off of reference file.
Instance Attribute Summary
- #archiver readonly
-
#can_compress? ⇒ Boolean
readonly
Private: Returns whether or not an asset can be compressed.
-
#cannot_compress? ⇒ Boolean
readonly
Private: Opposite of #can_compress?.
- #charset readonly
- #content_type readonly
- #source readonly
Instance Method Summary
-
#compress(file, target)
Private: Generates a gzipped file based off of reference asset.
Constructor Details
.new(asset, archiver: ZlibArchiver) ⇒ Gzip
Private: Generates a gzipped file based off of reference file.
# File 'lib/sprockets/utils/gzip.rb', line 43
def initialize(asset, archiver: ZlibArchiver) @content_type = asset.content_type @source = asset.source @charset = asset.charset @archiver = archiver end
Instance Attribute Details
#archiver (readonly)
[ GitHub ]# File 'lib/sprockets/utils/gzip.rb', line 40
attr_reader :content_type, :source, :charset, :archiver
#can_compress? ⇒ Boolean
(readonly)
Private: Returns whether or not an asset can be compressed.
We want to compress any file that is text based. You do not want to compress binary files as they may already be compressed and running them through a compression algorithm would make them larger.
Return Boolean.
# File 'lib/sprockets/utils/gzip.rb', line 68
def can_compress? # The "charset" of a mime type is present if the value is # encoded text. We can check this value to see if the asset # can be compressed. # # We also check against our list of non-text compressible mime types @charset || COMPRESSABLE_MIME_TYPES.include?(@content_type) end
#cannot_compress? ⇒ Boolean
(readonly)
Private: Opposite of #can_compress?.
Returns Boolean.
# File 'lib/sprockets/utils/gzip.rb', line 80
def cannot_compress? !can_compress? end
#charset (readonly)
[ GitHub ]# File 'lib/sprockets/utils/gzip.rb', line 40
attr_reader :content_type, :source, :charset, :archiver
#content_type (readonly)
[ GitHub ]#source (readonly)
[ GitHub ]# File 'lib/sprockets/utils/gzip.rb', line 40
attr_reader :content_type, :source, :charset, :archiver
Instance Method Details
#compress(file, target)
Private: Generates a gzipped file based off of reference asset.
Compresses the target asset’s contents and puts it into a file with the same name plus a .gz
extension in the same folder as the original. Does not modify the target asset.
Returns nothing.