Skip to content

Commit 5ad8727

Browse files
committed
Expose SolidQueue::Job#status
This is prone to race conditions and stale reads, and it's just intended for use in Mission Control or other reporting tools, not for regular operation.
1 parent 6a086a7 commit 5ad8727

File tree

3 files changed

+16
-0
lines changed

3 files changed

+16
-0
lines changed

app/models/solid_queue/job/executable.rb

+8
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,14 @@ def finished?
8989
finished_at.present?
9090
end
9191

92+
def status
93+
if finished?
94+
:finished
95+
elsif execution.present?
96+
execution.model_name.element.sub("_execution", "").to_sym
97+
end
98+
end
99+
92100
def retry
93101
failed_execution&.retry
94102
end

app/models/solid_queue/job/schedulable.rb

+4
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ def due?
3131
scheduled_at.nil? || scheduled_at <= Time.current
3232
end
3333

34+
def scheduled?
35+
scheduled_execution.present?
36+
end
37+
3438
private
3539
def schedule
3640
ScheduledExecution.create_or_find_by!(job_id: id)

test/models/solid_queue/job_test.rb

+4
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ class NonOverlappingGroupedJob2 < NonOverlappingJob
3535
end
3636

3737
solid_queue_job = SolidQueue::Job.last
38+
assert solid_queue_job.ready?
39+
assert_equal :ready, solid_queue_job.status
3840
assert_equal solid_queue_job.id, active_job.provider_job_id
3941
assert_equal 8, solid_queue_job.priority
4042
assert_equal "test", solid_queue_job.queue_name
@@ -56,6 +58,8 @@ class NonOverlappingGroupedJob2 < NonOverlappingJob
5658
end
5759

5860
solid_queue_job = SolidQueue::Job.last
61+
assert solid_queue_job.scheduled?
62+
assert_equal :scheduled, solid_queue_job.status
5963
assert_equal 8, solid_queue_job.priority
6064
assert_equal "test", solid_queue_job.queue_name
6165
assert_equal "AddToBufferJob", solid_queue_job.class_name

0 commit comments

Comments
 (0)