Sha256: 37fc33b339b5e563c44a220d41dea99b0685ae8b0d88743a14d4c8b9ab9a0b9f
Contents?: true
Size: 1.87 KB
Versions: 2
Compression:
Stored size: 1.87 KB
Contents
# frozen_string_literal: true require "active_job" require "active_support/all" require "suo" require "active_job/traffic_control/version" require "active_job/traffic_control/base" require "active_job/traffic_control/concurrency" require "active_job/traffic_control/disable" require "active_job/traffic_control/throttle" module ActiveJob module TrafficControl class << self attr_writer :cache_client attr_accessor :client_klass def cache_client @cache_client ||= begin if defined?(Rails.cache) Rails.cache else logger.error "defaulting to `ActiveSupport::Cache::MemoryStore`; please set"\ " `ActiveJob::TrafficControl.cache_client` to a `ActiveSupport::Cache` compatible class." ActiveSupport::Cache::MemoryStore.new end end end def logger ActiveJob::Base.logger end def client @client ||= begin logger.error "defaulting to Redis as the lock client; please set "\ " `ActiveJob::TrafficControl.client` to a Redis or Memcached client." @client_klass = Suo::Client::Redis Redis.new(url: ENV["REDIS_URL"]) end end def client=(cli) @client = cli if client.respond_to?(:checkout) # handle ConnectionPools unwrapped_client = client.checkout @client_klass = client_class_type(unwrapped_client) client.checkin else @client_klass = client_class_type(client) end client end def client_class_type(client) if client.instance_of?(Dalli::Client) Suo::Client::Memcached elsif client.instance_of?(::Redis) Suo::Client::Redis else raise ArgumentError, "Unsupported client type: #{client}" end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
activejob-traffic_control-0.1.2 | lib/active_job/traffic_control.rb |
activejob-traffic_control-0.1.1 | lib/active_job/traffic_control.rb |