module Que::ActiveJob::JobExtensions
A module that devs can include into their ApplicationJob classes to get access to Que-like job behavior.
Public Instance Methods
perform(*args)
click to toggle source
# File lib/que/active_job/extensions.rb, line 15 def perform(*args) args, kwargs = Que.split_out_ruby2_keywords(args) Que.internal_log(:active_job_perform, self) do {args: args, kwargs: kwargs} end _run( args: Que.recursively_freeze( que_filter_args( args.map { |a| a.is_a?(Hash) ? a.deep_symbolize_keys : a } ) ), kwargs: Que.recursively_freeze( que_filter_args( kwargs.deep_symbolize_keys, ) ), ) end
run(*args)
click to toggle source
# File lib/que/active_job/extensions.rb, line 10 def run(*args) raise Error, "Job class #{self.class} didn't define a run() method!" end
Private Instance Methods
que_filter_args(thing)
click to toggle source
Filter out :_aj_symbol_keys constructs so that keywords work as expected.
# File lib/que/active_job/extensions.rb, line 48 def que_filter_args(thing) case thing when Array thing.map { |t| que_filter_args(t) } when Hash thing.each_with_object({}) do |(k, v), hash| hash[k] = que_filter_args(v) unless k == :_aj_symbol_keys end else thing end end
que_target()
click to toggle source
Have helper methods like ‘destroy` and `retry_in` delegate to the actual job object. If the current job is being run through an ActiveJob
adapter other than Que’s, this will return nil, which is fine.
# File lib/que/active_job/extensions.rb, line 42 def que_target Thread.current[:que_current_job] end