class Sprockets::WebP::Converter
Attributes
context[R]
Public Class Methods
process(app, context, data)
click to toggle source
# File lib/sprockets/webp/converter.rb, line 15 def process(app, context, data) @context = context # Application Config alias config = app.config.assets # If Application Assets Digests enabled - Add Digest webp_file = webp_file_by_config(config, data) # WebP File Pathname webp_path = Pathname.new File.join(app.root, 'public', config.prefix, webp_file) # Create Directory for both Files, unless already exists FileUtils.mkdir_p(webp_path.dirname) unless Dir.exists?(webp_path.dirname) # encode to webp encode_to_webp(data, webp_path.to_path, webp_file) data end
Private Class Methods
encode_to_webp(data, webp_path, webp_file = "")
click to toggle source
# File lib/sprockets/webp/converter.rb, line 44 def encode_to_webp(data, webp_path, webp_file = "") # Create Temp File with Original File binary data Tempfile.open('webp') do |file| file.binmode file.write(data) file.close # Encode Original File Temp copy to WebP File Pathname begin ::WebP.encode(file.path, webp_path, Sprockets::WebP.encode_options) logger.info "Webp converted image #{webp_path}" rescue => e logger.warn "Webp convertion error of image #{webp_file}. Error info: #{e.message}" end end end
logger()
click to toggle source
# File lib/sprockets/webp/converter.rb, line 61 def logger if @context && @context.environment @context.environment.logger else logger = Logger.new($stderr) logger.level = Logger::FATAL logger end end
webp_file_by_config(config, data)
click to toggle source
# File lib/sprockets/webp/converter.rb, line 37 def webp_file_by_config(config, data) digest = config.digest ? "-#{context.environment.digest.update(data).hexdigest}" : nil file_name = context.logical_path # Original File name w/o extension file_ext = context.pathname.extname # Original File extension "#{file_name}#{digest}#{file_ext}.webp" # WebP File fullname end