class Sprockets::StaticCompiler
Attributes
env[RW]
paths[RW]
target[RW]
Public Class Methods
new(env, target, paths, options = {})
click to toggle source
# File lib/sprockets/static_compiler.rb, line 7 def initialize(env, target, paths, options = {}) @env = env @target = target @paths = paths @digest = options.key?(:digest) ? options.delete(:digest) : true @manifest = options.key?(:manifest) ? options.delete(:manifest) : true @manifest_path = options.delete(:manifest_path) || target end
Public Instance Methods
aliased_path_for(logical_path)
click to toggle source
# File lib/sprockets/static_compiler.rb, line 48 def aliased_path_for(logical_path) if File.basename(logical_path).start_with?('index') logical_path.sub(/\/index([^\/]+)$/, '\1') else logical_path.sub(/\.([^\/]+)$/, '/index.\1') end end
compile()
click to toggle source
# File lib/sprockets/static_compiler.rb, line 16 def compile manifest = {} env.each_logical_path(paths) do |logical_path| if asset = env.find_asset(logical_path) digest_path = write_asset(asset) manifest[asset.logical_path] = digest_path manifest[aliased_path_for(asset.logical_path)] = digest_path end end write_manifest(manifest) if @manifest end
path_for(asset)
click to toggle source
# File lib/sprockets/static_compiler.rb, line 44 def path_for(asset) @digest ? asset.digest_path : asset.logical_path end
write_asset(asset)
click to toggle source
# File lib/sprockets/static_compiler.rb, line 35 def write_asset(asset) path_for(asset).tap do |path| filename = File.join(target, path) FileUtils.mkdir_p File.dirname(filename) asset.write_to(filename) asset.write_to("#{filename}.gz") if filename.to_s =~ /\.(css|js)$/ end end
write_manifest(manifest)
click to toggle source
# File lib/sprockets/static_compiler.rb, line 28 def write_manifest(manifest) FileUtils.mkdir_p(@manifest_path) File.open("#{@manifest_path}/manifest.yml", 'wb') do |f| YAML.dump(manifest, f) end end