Skip to content

Commit 31676f7

Browse files
committed
Implement ActiveScheduler::ResqueWrapper.scheduled
Add support for ActiveJob/Resque callbacks when scheduling jobs by implementing ResqueWrapper.scheduled as described in: https://github.com/resque/resque-scheduler/tree/402cd06189c2d2abacc0c530dadd5db5ad46c268#support-for-resque-status-and-other-custom-jobs Without this method, resque-scheduler will enqueue the job using Resque::Job.create, bypassing callbacks entirely, see: https://github.com/resque/resque-scheduler/blob/402cd06189c2d2abacc0c530dadd5db5ad46c268/lib/resque/scheduler.rb#L257
1 parent 0bbc8bf commit 31676f7

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

lib/active_scheduler/resque_wrapper.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ def self.perform(job_data)
1818
end
1919
end
2020

21+
def self.scheduled(_queue, _wrapper_klass, *args)
22+
perform(*args)
23+
end
24+
2125
def self.wrap(schedule)
2226
schedule = HashWithIndifferentAccess.new(schedule)
2327

spec/active_scheduler/resque_wrapper_spec.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,4 +210,21 @@ class TestKlass
210210
end
211211
end
212212
end
213+
214+
describe '.scheduled' do
215+
let(:queue_name) { 'test_queue' }
216+
let(:job_data) { {'job_class' => 'TestKlass'} }
217+
218+
before do
219+
allow(described_class).to receive(:perform)
220+
end
221+
222+
after do
223+
described_class.scheduled(queue_name, described_class, job_data)
224+
end
225+
226+
it 'delegates to .perform with job_data' do
227+
expect(described_class).to receive(:perform).with(job_data)
228+
end
229+
end
213230
end

0 commit comments

Comments
 (0)