Class: RailsFailover::Redis

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_failover/redis.rb,
lib/rails_failover/redis/handler_base.rb,
lib/rails_failover/redis/compat_5x/client.rb,
lib/rails_failover/redis/compat_5x/config.rb,
lib/rails_failover/redis/compat_4x/handler.rb,
lib/rails_failover/redis/compat_5x/handler.rb,
lib/rails_failover/redis/compat_4x/connector.rb

Defined Under Namespace

Classes: Client, Config, Connector, Handler, HandlerBase

Constant Summary collapse

PRIMARY =
:primary
REPLICA =
:replica

Class Method Summary collapse

Class Method Details

.clear_callbacksObject

For testing



70
71
72
73
# File 'lib/rails_failover/redis.rb', line 70

def self.clear_callbacks
  @on_fallback_callback = nil
  @on_failover_callback = nil
end

.loggerObject



29
30
31
32
33
34
35
# File 'lib/rails_failover/redis.rb', line 29

def self.logger
  if @logger
    @logger
  elsif defined?(::Rails)
    ::Rails.logger
  end
end

.logger=(logger) ⇒ Object



25
26
27
# File 'lib/rails_failover/redis.rb', line 25

def self.logger=(logger)
  @logger = logger
end

.on_failover(&block) ⇒ Object



45
46
47
# File 'lib/rails_failover/redis.rb', line 45

def self.on_failover(&block)
  @on_failover_callback = block
end

.on_failover_callback!(key) ⇒ Object



49
50
51
52
53
54
55
# File 'lib/rails_failover/redis.rb', line 49

def self.on_failover_callback!(key)
  @on_failover_callback&.call(key)
rescue => e
  logger.warn(
    "RailsFailover::Redis.on_failover failed: #{e.class} #{e.message}\n#{e.backtrace.join("\n")}",
  )
end

.on_fallback(&block) ⇒ Object



57
58
59
# File 'lib/rails_failover/redis.rb', line 57

def self.on_fallback(&block)
  @on_fallback_callback = block
end

.on_fallback_callback!(key) ⇒ Object



61
62
63
64
65
66
67
# File 'lib/rails_failover/redis.rb', line 61

def self.on_fallback_callback!(key)
  @on_fallback_callback&.call(key)
rescue => e
  logger.warn(
    "RailsFailover::Redis.on_fallback failed: #{e.class} #{e.message}\n#{e.backtrace.join("\n")}",
  )
end

.verify_primary_frequency_secondsObject



41
42
43
# File 'lib/rails_failover/redis.rb', line 41

def self.verify_primary_frequency_seconds
  @verify_primary_frequency_seconds || 5
end

.verify_primary_frequency_seconds=(seconds) ⇒ Object



37
38
39
# File 'lib/rails_failover/redis.rb', line 37

def self.verify_primary_frequency_seconds=(seconds)
  @verify_primary_frequency_seconds = seconds
end