Module: ActiveRecord::Materialized::Tasks
- Defined in:
- lib/activerecord/materialized/tasks.rb
Overview
Defines the materialized:* rake tasks (refresh_all, refresh_stale, rebuild, verify, warm_up).
Constant Summary collapse
- DEFINITIONS =
{ refresh_all: "Refresh all registered materialized views", refresh_stale: "Refresh stale materialized views", enqueue_refreshes: "Enqueue a background RefreshJob per stale view (fleet fan-out; run from one owner)", rebuild: "Rebuild (fully materialize) all registered materialized views", verify: "Verify materialized view cache tables match their source relations", audit: "Verify materialized view contents against their source relations (data drift)", reconcile: "Reconcile stale materialized views: verify contents and repair drift (scoped)", enqueue_reconciles: "Enqueue a background ReconcileJob per stale view (fleet fan-out; run from one owner)", warm_up: "Materialize each view's configured warm_up partitions" }.freeze
Class Method Summary collapse
- .define! ⇒ Object
-
.run!(task_name) ⇒ Object
Each task name maps by convention to its
run_<task_name>!module method. - .run_audit! ⇒ Object
- .run_enqueue_reconciles! ⇒ Object
- .run_enqueue_refreshes! ⇒ Object
- .run_rebuild! ⇒ Object
- .run_reconcile! ⇒ Object
- .run_refresh_all! ⇒ Object
- .run_refresh_stale! ⇒ Object
- .run_verify! ⇒ Object
- .run_warm_up! ⇒ Object
Class Method Details
.define! ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/activerecord/materialized/tasks.rb', line 19 def self.define! application = ::Rake.application application.instance_eval do namespace :materialized do DEFINITIONS.each do |task_name, description| desc description task(task_name => :environment) { Tasks.run!(task_name) } end end end end |
.run!(task_name) ⇒ Object
Each task name maps by convention to its run_<task_name>! module method.
32 33 34 |
# File 'lib/activerecord/materialized/tasks.rb', line 32 def self.run!(task_name) public_send(:"run_#{task_name}!") end |
.run_audit! ⇒ Object
57 58 59 60 |
# File 'lib/activerecord/materialized/tasks.rb', line 57 def self.run_audit! ActiveRecord::Materialized.verify_data! Rails.logger.debug { "Audited data for #{Registry.all.size} materialized view(s)." } end |
.run_enqueue_reconciles! ⇒ Object
76 77 78 79 |
# File 'lib/activerecord/materialized/tasks.rb', line 76 def self.run_enqueue_reconciles! keys = ActiveRecord::Materialized.enqueue_stale_reconciles! Rails.logger.debug { "Enqueued #{keys.size} reconcile job(s) for stale view(s)." } end |
.run_enqueue_refreshes! ⇒ Object
71 72 73 74 |
# File 'lib/activerecord/materialized/tasks.rb', line 71 def self.run_enqueue_refreshes! keys = ActiveRecord::Materialized.enqueue_stale_refreshes! Rails.logger.debug { "Enqueued #{keys.size} refresh job(s) for stale view(s)." } end |
.run_rebuild! ⇒ Object
47 48 49 50 |
# File 'lib/activerecord/materialized/tasks.rb', line 47 def self.run_rebuild! Registry.rebuild_all! Rails.logger.debug { "Rebuilt #{Registry.all.size} materialized view(s)." } end |
.run_reconcile! ⇒ Object
62 63 64 65 66 67 68 69 |
# File 'lib/activerecord/materialized/tasks.rb', line 62 def self.run_reconcile! results = ActiveRecord::Materialized.reconcile_stale! repaired = results.sum(&:repaired_partition_count) failed = results.count(&:failed?) Rails.logger.debug do "Reconciled #{results.size} stale view(s); repaired #{repaired} partition(s); #{failed} failed." end end |
.run_refresh_all! ⇒ Object
36 37 38 39 |
# File 'lib/activerecord/materialized/tasks.rb', line 36 def self.run_refresh_all! Registry.refresh_all! Rails.logger.debug { "Refreshed #{Registry.all.size} materialized view(s)." } end |
.run_refresh_stale! ⇒ Object
41 42 43 44 45 |
# File 'lib/activerecord/materialized/tasks.rb', line 41 def self.run_refresh_stale! stale = Registry.stale_views stale.each(&:refresh!) Rails.logger.debug { "Refreshed #{stale.size} stale materialized view(s)." } end |
.run_verify! ⇒ Object
52 53 54 55 |
# File 'lib/activerecord/materialized/tasks.rb', line 52 def self.run_verify! ActiveRecord::Materialized.verify_schema! Rails.logger.debug { "Verified #{Registry.all.size} materialized view schema(s)." } end |
.run_warm_up! ⇒ Object
81 82 83 84 |
# File 'lib/activerecord/materialized/tasks.rb', line 81 def self.run_warm_up! Registry.warm_up_all! Rails.logger.debug { "Warmed up #{Registry.all.size} materialized view(s)." } end |