Class: ActiveRecord::Materialized::SchemaVerifier

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/activerecord/materialized/schema_verifier.rb

Overview

Raises when a provisioned cache table no longer matches the columns its source relation projects (drift); never alters the table or rebuilds data.

Defined Under Namespace

Classes: SchemaDriftError

Instance Method Summary collapse

Constructor Details

#initialize(view_class) ⇒ SchemaVerifier

Returns a new instance of SchemaVerifier.



15
16
17
# File 'lib/activerecord/materialized/schema_verifier.rb', line 15

def initialize(view_class)
  @view_class = view_class
end

Instance Method Details

#drifted?Boolean

Returns:

  • (Boolean)


32
33
34
35
36
37
# File 'lib/activerecord/materialized/schema_verifier.rb', line 32

def drifted?
  verify!
  false
rescue SchemaDriftError
  true
end

#verify!Object



21
22
23
24
25
26
27
28
29
# File 'lib/activerecord/materialized/schema_verifier.rb', line 21

def verify!
  return unless @view_class.table_exists?

  missing = expected_columns - actual_columns
  extra = actual_columns - expected_columns
  return if missing.empty? && extra.empty?

  Kernel.raise SchemaDriftError, drift_message(missing, extra)
end