Class: AnimateIt::RenderJob

Inherits:
ApplicationJob show all
Defined in:
app/jobs/animate_it/render_job.rb

Instance Method Summary collapse

Instance Method Details

#perform(render_id, composition_id, host, output_path, frames_dir, props = {}, _options = {}) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'app/jobs/animate_it/render_job.rb', line 5

def perform(render_id, composition_id, host, output_path, frames_dir, props = {}, _options = {})
  AnimateIt.load_compositions!
  composition = AnimateIt.registry.fetch(composition_id)

  RenderStore.start!(render_id)
  VideoRenderer.new(
    composition:,
    host:,
    output_path:,
    frames_dir:
  ).render(
    props:,
    cancel_check: -> { RenderStore.cancelled?(render_id) },
    on_progress: ->(frame, total_frames) { RenderStore.progress!(render_id, frame:, total_frames:) }
  )
  RenderStore.complete!(render_id)
rescue VideoRenderer::CancelledError
  RenderStore.cancel!(render_id)
rescue StandardError => e
  RenderStore.fail!(render_id, e)
  raise
end