Class: IngestFileJob
- Inherits:
-
ActiveJob::Base
- Object
- ActiveJob::Base
- IngestFileJob
- Defined in:
- app/jobs/ingest_file_job.rb
Instance Method Summary collapse
Instance Method Details
#perform(file_set, filename, mime_type, user, relation = 'original_file') ⇒ 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/ingest_file_job.rb', line 9 def perform(file_set, filename, mime_type, user, relation = 'original_file') local_file = File.open(filename, "rb") # If mime-type is known, wrap in an IO decorator # Otherwise allow Hydra::Works service to determine mime_type if mime_type local_file = Hydra::Derivatives::IoDecorator.new(local_file) local_file.mime_type = mime_type local_file.original_name = File.basename(filename) end # Tell AddFileToFileSet service to skip versioning because versions will be minted by VersionCommitter (called by save_characterize_and_record_committer) when necessary Hydra::Works::AddFileToFileSet.call(file_set, local_file, relation.to_sym, versioning: false) # Persist changes to the file_set file_set.save! repository_file = file_set.send(relation.to_sym) # Do post file ingest actions CurationConcerns::VersioningService.create(repository_file, user) # TODO: this is a problem, the file may not be available at this path on another machine. # It may be local, or it may be in s3 CharacterizeJob.perform_later(file_set, repository_file.id) end |