class Nanoc::Core::CompilationStages::CompileReps
Public Class Methods
new(reps:, outdatedness_store:, dependency_store:, action_sequences:, compilation_context:, compiled_content_cache:)
click to toggle source
# File lib/nanoc/core/compilation_stages/compile_reps.rb, line 10 def initialize(reps:, outdatedness_store:, dependency_store:, action_sequences:, compilation_context:, compiled_content_cache:) @reps = reps @outdatedness_store = outdatedness_store @dependency_store = dependency_store @action_sequences = action_sequences @compilation_context = compilation_context @compiled_content_cache = compiled_content_cache end
Public Instance Methods
run()
click to toggle source
# File lib/nanoc/core/compilation_stages/compile_reps.rb, line 19 def run outdated_reps = @reps.select { |r| @outdatedness_store.include?(r) } selector = Nanoc::Core::ItemRepSelector.new(outdated_reps) run_phase_stack do |phase_stack| selector.each do |rep| handle_errors_while(rep) do compile_rep(rep, phase_stack: phase_stack, is_outdated: @outdatedness_store.include?(rep)) end end end assert Nanoc::Core::Assertions::AllItemRepsHaveCompiledContent.new( compiled_content_cache: @compiled_content_cache, item_reps: @reps, ) ensure @outdatedness_store.store @compiled_content_cache.prune(items: @reps.map(&:item).uniq) @compiled_content_cache.store end
Private Instance Methods
build_phase_stack()
click to toggle source
# File lib/nanoc/core/compilation_stages/compile_reps.rb, line 60 def build_phase_stack recalculate_phase = Nanoc::Core::CompilationPhases::Recalculate.new( action_sequences: @action_sequences, dependency_store: @dependency_store, compilation_context: @compilation_context, ) cache_phase = Nanoc::Core::CompilationPhases::Cache.new( compiled_content_cache: @compiled_content_cache, compiled_content_store: @compilation_context.compiled_content_store, wrapped: recalculate_phase, ) resume_phase = Nanoc::Core::CompilationPhases::Resume.new( wrapped: cache_phase, ) write_phase = Nanoc::Core::CompilationPhases::Write.new( compiled_content_store: @compilation_context.compiled_content_store, wrapped: resume_phase, ) mark_done_phase = Nanoc::Core::CompilationPhases::MarkDone.new( wrapped: write_phase, outdatedness_store: @outdatedness_store, ) notify_phrase = Nanoc::Core::CompilationPhases::Notify.new( wrapped: mark_done_phase, ) notify_phrase end
compile_rep(rep, phase_stack:, is_outdated:)
click to toggle source
# File lib/nanoc/core/compilation_stages/compile_reps.rb, line 48 def compile_rep(rep, phase_stack:, is_outdated:) phase_stack.call(rep, is_outdated: is_outdated) end
handle_errors_while(item_rep) { || ... }
click to toggle source
# File lib/nanoc/core/compilation_stages/compile_reps.rb, line 42 def handle_errors_while(item_rep) yield rescue Exception => e # rubocop:disable Lint/RescueException raise Nanoc::Core::Errors::CompilationError.new(e, item_rep) end
run_phase_stack() { |phase_stack| ... }
click to toggle source
# File lib/nanoc/core/compilation_stages/compile_reps.rb, line 52 def run_phase_stack phase_stack = build_phase_stack phase_stack.start yield(phase_stack) ensure phase_stack.stop end