Class: Sprockets::Utils::Gzip
- Inherits:
-
Object
- Object
- Sprockets::Utils::Gzip
- Defined in:
- lib/sprockets/utils/gzip.rb
Defined Under Namespace
Modules: ZlibArchiver, ZopfliArchiver
Constant Summary collapse
- 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 }
Instance Attribute Summary collapse
-
#archiver ⇒ Object
readonly
Returns the value of attribute archiver.
-
#charset ⇒ Object
readonly
Returns the value of attribute charset.
-
#content_type ⇒ Object
readonly
Returns the value of attribute content_type.
-
#source ⇒ Object
readonly
Returns the value of attribute source.
Instance Method Summary collapse
-
#can_compress? ⇒ Boolean
Private: Returns whether or not an asset can be compressed.
-
#cannot_compress? ⇒ Boolean
Private: Opposite of ‘can_compress?`.
-
#compress(file, target) ⇒ Object
Private: Generates a gzipped file based off of reference asset.
-
#initialize(asset, archiver: ZlibArchiver) ⇒ Gzip
constructor
Private: Generates a gzipped file based off of reference file.
Constructor Details
#initialize(asset, archiver: ZlibArchiver) ⇒ Gzip
Private: Generates a gzipped file based off of reference file.
43 44 45 46 47 48 |
# 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 ⇒ Object (readonly)
Returns the value of attribute archiver.
40 41 42 |
# File 'lib/sprockets/utils/gzip.rb', line 40 def archiver @archiver end |
#charset ⇒ Object (readonly)
Returns the value of attribute charset.
40 41 42 |
# File 'lib/sprockets/utils/gzip.rb', line 40 def charset @charset end |
#content_type ⇒ Object (readonly)
Returns the value of attribute content_type.
40 41 42 |
# File 'lib/sprockets/utils/gzip.rb', line 40 def content_type @content_type end |
#source ⇒ Object (readonly)
Returns the value of attribute source.
40 41 42 |
# File 'lib/sprockets/utils/gzip.rb', line 40 def source @source end |
Instance Method Details
#can_compress? ⇒ Boolean
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.
68 69 70 71 72 73 74 75 |
# 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
Private: Opposite of ‘can_compress?`.
Returns Boolean.
80 81 82 |
# File 'lib/sprockets/utils/gzip.rb', line 80 def cannot_compress? !can_compress? end |
#compress(file, target) ⇒ Object
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.
91 92 93 94 95 96 |
# File 'lib/sprockets/utils/gzip.rb', line 91 def compress(file, target) mtime = Sprockets::PathUtils.stat(target).mtime archiver.call(file, source, mtime) nil end |