class Condenser::BrotliWriter
Generates a `.br` file using the Brotli algorithm with the brotli gem
Constants
- ADDED_MIME_TYPES
- COMPRESSALBE_FONT_TYPES
- COMPRESSALBE_GENERIC_TYPES
- COMPRESSALBE_TEXT_TYPES
What mime types should we compress? This list comes from: www.fastly.com/blog/new-gzip-settings-and-deciding-what-compress
Attributes
added_mime_types[R]
mime_types[R]
Public Class Methods
new(mime_types: nil, added_mime_types: nil)
click to toggle source
# File lib/condenser/writers/brotli_writer.rb, line 21 def initialize(mime_types: nil, added_mime_types: nil) @mime_types = mime_types || (COMPRESSALBE_TEXT_TYPES + COMPRESSALBE_FONT_TYPES + COMPRESSALBE_GENERIC_TYPES) @added_mime_types = added_mime_types || ADDED_MIME_TYPES end
Public Instance Methods
call(output_directory, asset)
click to toggle source
# File lib/condenser/writers/brotli_writer.rb, line 44 def call(output_directory, asset) filename = File.join(output_directory, "#{asset.path}.br") FileUtils.mkdir_p(File.dirname(filename)) Condenser::Utils.atomic_write(filename) do |file| file.write(Brotli.deflate(asset.source, { mode: mode_for_mime_type(asset.content_types.last), quality: 11 # lgwin: 10-24 # lgblock: 16-24 think bigger more compression but more mem })) end ["#{asset.filename}.br"] end
exist?(asset)
click to toggle source
# File lib/condenser/writers/brotli_writer.rb, line 30 def exist?(asset) ::File.exist?(path(asset)) end
mode_for_mime_type(mime_type)
click to toggle source
# File lib/condenser/writers/brotli_writer.rb, line 34 def mode_for_mime_type(mime_type) if COMPRESSALBE_TEXT_TYPES.include?(mime_type) :text elsif COMPRESSALBE_FONT_TYPES.include?(mime_type) :font else :generic end end
path(asset)
click to toggle source
# File lib/condenser/writers/brotli_writer.rb, line 26 def path(asset) "#{asset.path}.br" end