28 lines
979 B
Ruby
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
|