1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00
rails--rails/activejob/lib/active_job/queue_adapters/test_adapter.rb
2014-09-02 07:50:16 +00:00

77 lines
2.4 KiB
Ruby

module ActiveJob
module QueueAdapters
class TestAdapter
mattr_accessor(:perform_enqueued_jobs) { false }
mattr_accessor(:perform_enqueued_at_jobs) { false }
class << self
# Provides a store of all the enqueued jobs with the TestAdapter so you can check them.
def enqueued_jobs
@@enqueued_jobs ||= []
end
# Allows you to over write the default enqueued jobs store from an array to some
# other object. If you just want to clear the store,
# call ActiveJob::QueueAdapters::TestAdapter.enqueued_jobs.clear.
#
# If you place another object here, please make sure it responds to:
#
# * << (message)
# * clear
# * length
# * size
# * and other common Array methods
def enqueued_jobs=(val)
@@enqueued_jobs = val
end
# Provides a store of all the performed jobs with the TestAdapter so you can check them.
def performed_jobs
@@performed_jobs ||= []
end
# Allows you to over write the default performed jobs store from an array to some
# other object. If you just want to clear the store,
# call ActiveJob::QueueAdapters::TestAdapter.performed_jobs.clear.
#
# If you place another object here, please make sure it responds to:
#
# * << (message)
# * clear
# * length
# * size
# * and other common Array methods
def performed_jobs=(val)
@@performed_jobs = val
end
def enqueue(job, *args)
if perform_enqueued_jobs?
performed_jobs << {job: job, args: args, queue: job.queue_name}
job.new.execute(*args)
else
enqueued_jobs << {job: job, args: args, queue: job.queue_name}
end
end
def enqueue_at(job, timestamp, *args)
if perform_enqueued_at_jobs?
performed_jobs << {job: job, args: args, queue: job.queue_name, run_at: timestamp}
job.new.execute(*args)
else
enqueued_jobs << {job: job, args: args, queue: job.queue_name, run_at: timestamp}
end
end
private
def perform_enqueued_jobs?
perform_enqueued_jobs
end
def perform_enqueued_at_jobs?
perform_enqueued_at_jobs
end
end
end
end
end