Class: Ragdoll::ExtractTextJob

Inherits:
ActiveJob::Base
  • Object
show all
Defined in:
app/jobs/ragdoll/extract_text_job.rb

Instance Method Summary collapse

Instance Method Details

#perform(document_id) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'app/jobs/ragdoll/extract_text_job.rb', line 9

def perform(document_id)
  document = Ragdoll::Document.find(document_id)
  return unless document.file_attached?
  return if document.content.present?

  document.update!(status: "processing")

  extracted_content = document.extract_text_from_file

  if extracted_content.present?
    document.update!(
      content: extracted_content,
      status: "processed"
    )

    # Queue follow-up jobs
    Ragdoll::GenerateSummaryJob.perform_later(document_id)
    Ragdoll::ExtractKeywordsJob.perform_later(document_id)
    Ragdoll::GenerateEmbeddingsJob.perform_later(document_id)
  else
    document.update!(status: "error")
  end
rescue ActiveRecord::RecordNotFound
  # Document was deleted, nothing to do
rescue StandardError => e
  document&.update!(status: "error")
  raise e
end