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