lib/good_job/adapter.rb in good_job-0.7.0 vs lib/good_job/adapter.rb in good_job-0.8.0
- old
+ new
@@ -1,23 +1,34 @@
module GoodJob
class Adapter
- def initialize(inline: false)
- @inline = inline
+ EXECUTION_MODES = [:inline, :external].freeze # TODO: async
+
+ def initialize(execution_mode: nil, inline: false)
+ if inline
+ ActiveSupport::Deprecation.warn('GoodJob::Adapter#new(inline: true) is deprecated; use GoodJob::Adapter.new(execution_mode: :inline) instead')
+ @execution_mode = :inline
+ elsif execution_mode
+ raise ArgumentError, "execution_mode: must be one of #{EXECUTION_MODES.join(', ')}." unless EXECUTION_MODES.include?(execution_mode)
+
+ @execution_mode = execution_mode
+ else
+ @execution_mode = :external
+ end
end
def enqueue(active_job)
enqueue_at(active_job, nil)
end
def enqueue_at(active_job, timestamp)
good_job = GoodJob::Job.enqueue(
active_job,
scheduled_at: timestamp ? Time.zone.at(timestamp) : nil,
- create_with_advisory_lock: inline?
+ create_with_advisory_lock: execute_inline?
)
- if inline?
+ if execute_inline?
begin
good_job.perform
ensure
good_job.advisory_unlock
end
@@ -28,10 +39,19 @@
def shutdown(wait: true) # rubocop:disable Lint/UnusedMethodArgument
nil
end
+ def execute_inline?
+ @execution_mode == :inline
+ end
+
def inline?
- @inline
+ ActiveSupport::Deprecation.warn('GoodJob::Adapter::inline? is deprecated; use GoodJob::Adapter::execute_inline? instead')
+ execute_inline?
+ end
+
+ def execute_externally?
+ @execution_mode == :external
end
end
end