houdini/lib/delayed_job_helper.rb
2019-08-02 19:07:29 +02:00

28 lines
979 B
Ruby

# frozen_string_literal: true
# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
require 'qx'
require 'delayed_job'
module DelayedJobHelper
# Create a serialized delayed job handler for use in inserting new delayed jobs with raw sql
# Be sure to wrap the handler in double quotes when inserting, not single
def self.create_handler(obj, method_name, args)
Delayed::PerformableMethod.new(obj, method_name, args).to_yaml.to_s
end
# Manually enqueue a job
def self.enqueue_job(obj, method_name, args, options = {})
handler = Delayed::PerformableMethod.new(obj, method_name, args).to_yaml.to_s
Qx.insert_into(:delayed_jobs)
.values(
created_at: Time.current,
updated_at: Time.current,
priority: options[:priority] || 0,
attempts: 0,
handler: handler,
run_at: options[:run_at] || Time.current,
queue: options[:queue]
).returning('*').execute
end
end