lib/delayed/master/config.rb in delayed_job_master-2.0.3 vs lib/delayed/master/config.rb in delayed_job_master-3.0.0
- old
+ new
@@ -1,95 +1,88 @@
+# frozen_string_literal: true
+
+require_relative 'worker_setting'
+
module Delayed
- class Master
+ module Master
class Config
- SIMPLE_CONFIGS = [:working_directory, :log_file, :log_level, :pid_file, :monitor_wait, :daemon, :databases]
- CALLBACK_CONFIGS = [:before_fork, :after_fork, :before_monitor, :after_monitor]
+ SIMPLE_CONFIGS = [:daemon, :working_directory, :log_file, :log_level, :pid_file,
+ :monitor_interval, :polling_interval, :databases]
+ CALLBACK_CONFIGS = [:before_fork, :after_fork,
+ :before_monitor, :after_monitor, :around_monitor,
+ :before_polling, :after_polling, :around_polling]
- attr_reader :data, :workers
+ attr_accessor *SIMPLE_CONFIGS
+ attr_accessor *CALLBACK_CONFIGS
+ attr_reader :workers
def initialize(file = nil)
- @data = {}
+ @daemon = false
+ @working_directory = Dir.pwd
+ @pid_file = "#{@working_directory}/tmp/pids/delayed_job_master.pid"
+ @log_file = "#{@working_directory}/log/delayed_job_master.log"
+ @log_level = :info
+ @monitor_interval = 5
+ @polling_interval = 5
+ @databases = []
+ CALLBACK_CONFIGS.each do |name|
+ send("#{name}=", [])
+ end
@workers = []
read(file) if file
end
- def worker_settings
- @workers
- end
-
def read(file)
instance_eval(File.read(file), file)
end
+ def worker_settings
+ @workers
+ end
+
def add_worker
- worker = WorkerSetting.new(id: @workers.size, queues: [], count: 1, exit_on_complete: true)
- yield worker
+ worker = WorkerSetting.new(id: @workers.size)
+ yield worker if block_given?
@workers << worker
+ worker
end
- def callbacks
- @data.select { |k, _| CALLBACK_CONFIGS.include?(k) }
- end
-
- def run_callback(key, *args)
- @data[key].call(*args)
- end
-
SIMPLE_CONFIGS.each do |key|
- define_method(key) do |value = nil|
- if !value.nil?
- @data[key] = value
+ define_method(key) do |*args|
+ if args.size > 0
+ instance_variable_set("@#{key}", args[0])
else
- @data[key]
+ instance_variable_get("@#{key}")
end
end
end
CALLBACK_CONFIGS.each do |key|
define_method(key) do |&block|
if block
- @data[key] = block
+ instance_variable_get("@#{key}") << block
else
- @data[key]
+ instance_variable_get("@#{key}")
end
end
end
- class WorkerSetting
- SIMPLE_CONFIGS = [:id, :count, :max_memory,
- :min_priority, :max_priority, :sleep_delay, :read_ahead, :exit_on_complete,
- :max_attempts, :max_run_time, :destroy_failed_jobs]
- ARRAY_CONFIGS = [:queues]
+ def monitor_wait(value = nil)
+ ActiveSupport::Deprecation.warn <<-TEXT.squish
+ deprecated 'monitor_wait' setting was used. Use 'monitor_interval' instead."
+ TEXT
+ @monitor_interval = @polling_interval = value
+ end
- attr_reader :data
-
- def initialize(default = {})
- @data = default
+ def abstract_texts
+ texts = []
+ texts << "databases: #{@databases.join(', ')}" if @databases.present?
+ texts += @workers.map do |worker|
+ str = "worker[#{worker.id}]: #{worker.max_processes} processes, #{worker.max_threads} threads"
+ str += " (#{worker.queues.join(', ')})" if worker.queues.present?
+ str
end
-
- def control(value = nil)
- puts "DEPRECATION WARNING: deprecated control setting is called from #{caller(1, 1).first}. Remove it from your config file."
- end
-
- SIMPLE_CONFIGS.each do |key|
- define_method(key) do |value = nil|
- if !value.nil?
- @data[key] = value
- else
- @data[key]
- end
- end
- end
-
- ARRAY_CONFIGS.each do |key|
- define_method(key) do |value = nil|
- if value
- @data[key] = Array(value)
- else
- @data[key]
- end
- end
- end
+ texts
end
end
end
end