class Propshaft::Processor
Attributes
compilers[R]
load_path[R]
manifest_path[R]
output_path[R]
Public Class Methods
new(load_path:, output_path:, compilers:, manifest_path:)
click to toggle source
# File lib/propshaft/processor.rb, line 6 def initialize(load_path:, output_path:, compilers:, manifest_path:) @load_path, @output_path = load_path, output_path @manifest_path = manifest_path @compilers = compilers end
Public Instance Methods
clean(count)
click to toggle source
# File lib/propshaft/processor.rb, line 22 def clean(count) Propshaft::OutputPath.new(output_path, load_path.manifest).clean(count, 1.hour) end
clobber()
click to toggle source
# File lib/propshaft/processor.rb, line 18 def clobber FileUtils.rm_r(output_path) if File.exist?(output_path) end
process()
click to toggle source
# File lib/propshaft/processor.rb, line 12 def process ensure_output_path_exists write_manifest output_assets end
Private Instance Methods
compile_asset(asset)
click to toggle source
# File lib/propshaft/processor.rb, line 54 def compile_asset(asset) File.open(output_path.join(asset.digested_path), "w+") do |file| begin file.write compilers.compile(asset) rescue Encoding::UndefinedConversionError # FIXME: Not sure if there's a better way here? file.write compilers.compile(asset).force_encoding("UTF-8") end end if compilers.compilable?(asset) end
copy_asset(asset)
click to toggle source
# File lib/propshaft/processor.rb, line 65 def copy_asset(asset) FileUtils.copy asset.path, output_path.join(asset.digested_path) end
ensure_output_path_exists()
click to toggle source
# File lib/propshaft/processor.rb, line 27 def ensure_output_path_exists FileUtils.mkdir_p output_path end
output_asset(asset)
click to toggle source
# File lib/propshaft/processor.rb, line 50 def output_asset(asset) compile_asset(asset) || copy_asset(asset) end
output_assets()
click to toggle source
# File lib/propshaft/processor.rb, line 40 def output_assets load_path.assets.each do |asset| unless output_path.join(asset.digested_path).exist? Propshaft.logger.info "Writing #{asset.digested_path}" FileUtils.mkdir_p output_path.join(asset.digested_path.parent) output_asset(asset) end end end
write_manifest()
click to toggle source
# File lib/propshaft/processor.rb, line 32 def write_manifest FileUtils.mkdir_p(File.dirname(manifest_path)) File.open(manifest_path, "wb+") do |manifest| manifest.write load_path.manifest.to_json end end