Module: ActiveRecord::Health
- Defined in:
- lib/activerecord/health.rb,
lib/activerecord/health/railtie.rb,
lib/activerecord/health/extensions.rb,
lib/activerecord/health/configuration.rb,
lib/activerecord/health/adapters/mysql_adapter.rb,
lib/activerecord/health/adapters/postgresql_adapter.rb
Defined Under Namespace
Modules: Adapters, ConnectionExtension, ModelExtension
Classes: Configuration, ConfigurationError, ConnectionModelProxy, DbConfigProxy, ModelConfiguration, Railtie
Constant Summary
collapse
- QUERY_TIMEOUT =
1
Class Method Summary
collapse
Class Method Details
.configuration ⇒ Object
18
19
20
|
# File 'lib/activerecord/health.rb', line 18
def configuration
@configuration ||= Configuration.new
end
|
14
15
16
|
# File 'lib/activerecord/health.rb', line 14
def configure
yield(configuration)
end
|
.load_pct(model: ActiveRecord::Base) ⇒ Object
30
31
32
33
34
35
|
# File 'lib/activerecord/health.rb', line 30
def load_pct(model: ActiveRecord::Base)
db_config_name = model.connection_db_config.name
cache_key = "activerecord_health:load_pct:#{db_config_name}"
read_from_cache(cache_key) { query_load_pct(model) }
end
|
.ok?(model: ActiveRecord::Base) ⇒ Boolean
26
27
28
|
# File 'lib/activerecord/health.rb', line 26
def ok?(model: ActiveRecord::Base)
load_pct(model: model) <= config_for(model).threshold
end
|
.reset_configuration! ⇒ Object
22
23
24
|
# File 'lib/activerecord/health.rb', line 22
def reset_configuration!
@configuration = nil
end
|
.sheddable(model: ActiveRecord::Base) ⇒ Object
37
38
39
40
41
|
# File 'lib/activerecord/health.rb', line 37
def sheddable(model: ActiveRecord::Base)
return false unless ok?(model: model)
yield
true
end
|
.sheddable_pct(pct:, model: ActiveRecord::Base) ⇒ Object
43
44
45
46
47
|
# File 'lib/activerecord/health.rb', line 43
def sheddable_pct(pct:, model: ActiveRecord::Base)
return false if load_pct(model: model) > pct
yield
true
end
|