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