Class: ActiveRecordProxyAdapters::Configuration

Inherits:
Object
  • Object
show all
Includes:
SynchronizableConfiguration
Defined in:
lib/active_record_proxy_adapters/configuration.rb

Overview

Provides a global configuration object to configure how the proxy should behave.

Constant Summary collapse

DEFAULT_DATABASE_NAME =
:primary
DEFAULT_REPLICA_DATABASE_NAME =
:primary_replica
REGEXP_TIMEOUT_STRATEGY_REGISTRY =
{
  log: proc { |sql_string, regex = nil|
    ActiveRecordProxyAdapters.config.logger.error(TIMEOUT_MESSAGE_BUILDER.call(sql_string, regex))
  },
  raise: proc { |sql_string, regex = nil|
    raise ActiveRecordProxyAdapters::RegexpTimeoutError, TIMEOUT_MESSAGE_BUILDER.call(sql_string, regex)
  }
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.



56
57
58
59
60
61
62
63
64
# File 'lib/active_record_proxy_adapters/configuration.rb', line 56

def initialize
  @lock = Monitor.new

  self.cache_configuration     = CacheConfiguration.new(@lock)
  self.context_store           = ActiveRecordProxyAdapters::Context
  self.regexp_timeout_strategy = :log
  self.logger                  = ActiveRecord::Base.logger || Logger.new($stdout)
  @database_configurations     = {}
end

Instance Attribute Details

#context_storeClass

Returns The context that is used to store the current request’s state.

Returns:

  • (Class)

    The context that is used to store the current request’s state.



48
49
50
# File 'lib/active_record_proxy_adapters/configuration.rb', line 48

def context_store
  @context_store
end

#loggerLogger

Returns The logger to use for logging messages.

Returns:

  • (Logger)

    The logger to use for logging messages.



54
55
56
# File 'lib/active_record_proxy_adapters/configuration.rb', line 54

def logger
  @logger
end

#regexp_timeout_strategyProc

Returns The timeout strategy to use for regex matching.

Returns:

  • (Proc)

    The timeout strategy to use for regex matching.



51
52
53
# File 'lib/active_record_proxy_adapters/configuration.rb', line 51

def regexp_timeout_strategy
  @regexp_timeout_strategy
end

Instance Method Details

#cacheObject



124
125
126
# File 'lib/active_record_proxy_adapters/configuration.rb', line 124

def cache
  block_given? ? yield(cache_configuration) : cache_configuration
end

#checkout_timeoutObject



90
91
92
# File 'lib/active_record_proxy_adapters/configuration.rb', line 90

def checkout_timeout
  default_database_config.checkout_timeout
end

#checkout_timeout=(checkout_timeout) ⇒ Object



94
95
96
# File 'lib/active_record_proxy_adapters/configuration.rb', line 94

def checkout_timeout=(checkout_timeout)
  default_database_config.checkout_timeout = checkout_timeout
end

#database(database_name) ⇒ Object



117
118
119
120
121
122
# File 'lib/active_record_proxy_adapters/configuration.rb', line 117

def database(database_name)
  key = database_name.to_s
  lock.synchronize { @database_configurations[key] ||= DatabaseConfiguration.new }

  block_given? ? yield(database_configurations[key]) : database_configurations[key]
end

#log_subscriber_primary_prefixObject



70
71
72
# File 'lib/active_record_proxy_adapters/configuration.rb', line 70

def log_subscriber_primary_prefix
  default_database_config.log_subscriber_prefix
end

#log_subscriber_primary_prefix=(prefix) ⇒ Object



66
67
68
# File 'lib/active_record_proxy_adapters/configuration.rb', line 66

def log_subscriber_primary_prefix=(prefix)
  default_database_config.log_subscriber_prefix = prefix
end

#log_subscriber_replica_prefixObject



78
79
80
# File 'lib/active_record_proxy_adapters/configuration.rb', line 78

def log_subscriber_replica_prefix
  default_replica_config.log_subscriber_prefix
end

#log_subscriber_replica_prefix=(prefix) ⇒ Object



74
75
76
# File 'lib/active_record_proxy_adapters/configuration.rb', line 74

def log_subscriber_replica_prefix=(prefix)
  default_replica_config.log_subscriber_prefix = prefix
end

#proxy_delayObject



82
83
84
# File 'lib/active_record_proxy_adapters/configuration.rb', line 82

def proxy_delay
  default_database_config.proxy_delay
end

#proxy_delay=(proxy_delay) ⇒ Object



86
87
88
# File 'lib/active_record_proxy_adapters/configuration.rb', line 86

def proxy_delay=(proxy_delay)
  default_database_config.proxy_delay = proxy_delay
end