Sha256: 4d93e37dffda2b49ba9745051536b39de638fef50130bdec640195989783f4c1
Contents?: true
Size: 1.29 KB
Versions: 23
Compression:
Stored size: 1.29 KB
Contents
require "open-uri" module CanvasSync module Jobs # ActiveJob class that wraps around a report processor. This job will # download the report, and then pass the file path and options into the # process method on the processor. class ReportProcessorJob < CanvasSync::Job # @param job_chain [Hash] # @param report_name [Hash] e.g., 'provisioning_csv' # @param report_url [String] # @param processor [String] a stringified report processor class name # @param options [Hash] hash of options that will be passed to the job processor # @return [nil] def perform(job_chain, report_name, report_url, processor, options, report_id) @job_log.update_attributes(job_class: processor) download(report_name, report_url) do |file_path| options = job_chain[:global_options].merge(options).merge({ report_processor_job_id: @job_log.job_id }) processor.constantize.process(file_path, options, report_id) end CanvasSync.invoke_next(job_chain) end private def download(report_name, report_url) Dir.mktmpdir do |dir| file_path = "#{dir}/#{report_name}" IO.copy_stream(open(report_url), file_path) yield file_path end end end end end
Version data entries
23 entries across 23 versions & 1 rubygems