class Sprockets::StaticAsset
`StaticAsset`s are used for files that are served verbatim without any processing or concatenation. These are typical images and other binary files.
Public Instance Methods
source()
click to toggle source
Returns file contents as its `source`.
# File lib/sprockets/static_asset.rb, line 11 def source # File is read everytime to avoid memory bloat of large binary files pathname.open('rb') { |f| f.read } end
to_path()
click to toggle source
Implemented for Rack SendFile support.
# File lib/sprockets/static_asset.rb, line 17 def to_path pathname.to_s end
write_to(filename, options = {})
click to toggle source
Save asset to disk.
# File lib/sprockets/static_asset.rb, line 22 def write_to(filename, options = {}) # Gzip contents if filename has '.gz' options[:compress] ||= File.extname(filename) == '.gz' FileUtils.mkdir_p File.dirname(filename) if options[:compress] # Open file and run it through `Zlib` pathname.open('rb') do |rd| File.open("#{filename}+", 'wb') do |wr| gz = Zlib::GzipWriter.new(wr, Zlib::BEST_COMPRESSION) buf = "" while rd.read(16384, buf) gz.write(buf) end gz.close end end else # If no compression needs to be done, we can just copy it into place. FileUtils.cp(pathname, "#{filename}+") end # Atomic write FileUtils.mv("#{filename}+", filename) # Set mtime correctly File.utime(mtime, mtime, filename) nil ensure # Ensure tmp file gets cleaned up FileUtils.rm("#{filename}+") if File.exist?("#{filename}+") end