58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
# File 'lib/que/job.rb', line 58
def enqueue(
*args,
queue: nil,
priority: nil,
run_at: nil,
job_class: nil,
tags: nil,
**arg_opts
)
args << arg_opts if arg_opts.any?
if tags
if tags.length > MAXIMUM_TAGS_COUNT
raise Que::Error, "Can't enqueue a job with more than #{MAXIMUM_TAGS_COUNT} tags! (passed #{tags.length})"
end
tags.each do |tag|
if tag.length > MAXIMUM_TAG_LENGTH
raise Que::Error, "Can't enqueue a job with a tag longer than 100 characters! (\"#{tag}\")"
end
end
end
attrs = {
queue: queue || resolve_que_setting(:queue) || Que.default_queue,
priority: priority || resolve_que_setting(:priority),
run_at: run_at || resolve_que_setting(:run_at),
args: Que.serialize_json(args),
data: tags ? Que.serialize_json(tags: tags) : "{}",
job_class: \
job_class || name ||
raise(Error, "Can't enqueue an anonymous subclass of Que::Job"),
}
if attrs[:run_at].nil? && resolve_que_setting(:run_synchronously)
attrs[:args] = Que.deserialize_json(attrs[:args])
attrs[:data] = Que.deserialize_json(attrs[:data])
_run_attrs(attrs)
else
values =
Que.execute(
:insert_job,
attrs.values_at(:queue, :priority, :run_at, :job_class, :args, :data),
).first
new(values)
end
end
|