Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 5 additions & 11 deletions lib/delayed/active_job_adapter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,20 +31,14 @@ def enqueue_all(jobs)
private

def _enqueue(job)
assert_job_safe_to_enqueue!(job)
job_options = build_job_options(job)
delayed_job = Delayed::Job.enqueue_job(job_options)
perform_post_enqueue_assignments([job], [delayed_job])
job
job.tap { |j| enqueue_all([j]) }
end

def assert_jobs_safe_to_enqueue!(jobs)
jobs.each { |job| assert_job_safe_to_enqueue!(job) }
end

def assert_job_safe_to_enqueue!(job)
if enqueue_after_transaction_commit_enabled?(job)
raise UnsafeEnqueueError, "The ':delayed' ActiveJob adapter is not compatible with enqueue_after_transaction_commit"
jobs.each do |job|
if enqueue_after_transaction_commit_enabled?(job)
raise UnsafeEnqueueError, "The ':delayed' ActiveJob adapter is not compatible with enqueue_after_transaction_commit"
end
end
end

Expand Down
10 changes: 5 additions & 5 deletions spec/delayed/active_job_adapter_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ def serialize(*)
end

it 'bubbles out an error if Delayed::Job.enqueue_job raises (single-job path)' do
allow(Delayed::Job).to receive(:enqueue_job).and_raise('uh oh, enqueue failed!')
allow(Delayed::Job).to receive(:enqueue_all).and_raise('uh oh, enqueue failed!')

expect { JobClass.perform_later }.to raise_error(RuntimeError, 'uh oh, enqueue failed!')
end
Expand Down Expand Up @@ -590,14 +590,14 @@ def perform; end
end
end

describe 'single-job perform_later routes through Delayed::Job.enqueue_job' do
it 'invokes Delayed::Job.enqueue_job (not Delayed::Job.enqueue or Delayed::Job.enqueue_all)' do
describe 'single-job perform_later routes through Delayed::Job.enqueue_all' do
it 'invokes Delayed::Job.enqueue_all (not Delayed::Job.enqueue or Delayed::Job.enqueue_job)' do
expect(Delayed::Job).not_to receive(:enqueue) # rubocop:disable RSpec/MessageSpies
expect(Delayed::Job).not_to receive(:enqueue_all) # rubocop:disable RSpec/MessageSpies
expect(Delayed::Job).not_to receive(:enqueue_job) # rubocop:disable RSpec/MessageSpies

JobClass.perform_later

expect(Delayed::Job).to have_received(:enqueue_job).once
expect(Delayed::Job).to have_received(:enqueue_all).once
end

it 'delegates exactly one Delayed::Job' do
Expand Down
Loading