Module: ActiveRecord::Materialized

Extended by:
T::Sig
Defined in:
lib/activerecord/materialized/module_api.rb,
lib/activerecord/materialized/view.rb,
lib/activerecord/materialized/tasks.rb,
lib/activerecord/materialized/railtie.rb,
lib/activerecord/materialized/version.rb,
lib/activerecord/materialized/metadata.rb,
lib/activerecord/materialized/registry.rb,
lib/activerecord/materialized/cold_read.rb,
lib/activerecord/materialized/refresher.rb,
lib/activerecord/materialized/view_class.rb,
lib/activerecord/materialized/refresh_job.rb,
lib/activerecord/materialized/write_change.rb,
lib/activerecord/materialized/configuration.rb,
lib/activerecord/materialized/summary_delta.rb,
lib/activerecord/materialized/refresh_result.rb,
lib/activerecord/materialized/type_reexports.rb,
lib/activerecord/materialized/async_refresher.rb,
lib/activerecord/materialized/metadata/schema.rb,
lib/activerecord/materialized/metadata_record.rb,
lib/activerecord/materialized/partition_state.rb,
lib/activerecord/materialized/schema_verifier.rb,
lib/activerecord/materialized/view_definition.rb,
lib/activerecord/materialized/delta_maintainer.rb,
lib/activerecord/materialized/partition_record.rb,
lib/activerecord/materialized/maintenance_delta.rb,
lib/activerecord/materialized/maintenance_store.rb,
lib/activerecord/materialized/migration_builder.rb,
lib/activerecord/materialized/query_expressions.rb,
lib/activerecord/materialized/refresh_callbacks.rb,
lib/activerecord/materialized/refresh_scheduler.rb,
lib/activerecord/materialized/aggregate_analysis.rb,
lib/activerecord/materialized/cache_table_schema.rb,
lib/activerecord/materialized/dependency_registry.rb,
lib/activerecord/materialized/metadata/timestamps.rb,
lib/activerecord/materialized/dependency_trackable.rb,
lib/activerecord/materialized/table_model_registry.rb,
lib/activerecord/materialized/relation_cache_writer.rb,
lib/activerecord/materialized/summary_delta_builder.rb,
lib/activerecord/materialized/incremental_maintainer.rb,
lib/activerecord/materialized/maintenance_delta_builder.rb,
lib/activerecord/materialized/metadata/maintenance_payload.rb,
lib/activerecord/materialized/view_incremental_class_methods.rb,
lib/activerecord/materialized/view_query_access_class_methods.rb,
lib/activerecord/materialized/view_configuration_class_methods.rb,
lib/activerecord/materialized/view_refresh_policy_class_methods.rb

Overview

Application-level materialized views for Rails/ActiveRecord on databases without native materialized-view support (MySQL, MariaDB, SQLite).

Define views by subclassing View. This module is the top-level entry point for global configuration and operational helpers such as Materialized.verify_schema!.

Defined Under Namespace

Modules: CacheTableSchema, DependencyTrackable, QueryExpressions, RefreshCallbacks, Tasks, ViewConfigurationClassMethods, ViewIncrementalClassMethods, ViewQueryAccessClassMethods, ViewRefreshPolicyClassMethods Classes: AggregateAnalysis, AsyncRefresher, ColdRead, Configuration, DeltaMaintainer, DependencyRegistry, IncrementalMaintainer, MaintenanceDelta, MaintenanceDeltaBuilder, MaintenanceStore, Metadata, MetadataRecord, MigrationBuilder, NotMaterializedError, PartitionRecord, PartitionState, Railtie, RefreshJob, RefreshResult, RefreshScheduler, Refresher, Registry, RelationCacheWriter, SchemaVerifier, SummaryDelta, SummaryDeltaBuilder, TableModelRegistry, View, ViewDefinition, WriteChange

Constant Summary collapse

VERSION =

The gem version.

"0.1.0"
ViewClass =
T.type_alias { T.class_of(View) }
DebounceInterval =
T.type_alias { ::ActiveRecordMaterializedTypes::DebounceInterval }
StalenessDuration =
T.type_alias { ::ActiveRecordMaterializedTypes::StalenessDuration }
SourceDefinition =
T.type_alias { ::ActiveRecordMaterializedTypes::SourceDefinition }
RefreshMode =
T.type_alias { ::ActiveRecordMaterializedTypes::RefreshMode }
RefreshCallbackName =
T.type_alias { ::ActiveRecordMaterializedTypes::RefreshCallbackName }
Connection =
T.type_alias { ::ActiveRecordMaterializedTypes::Connection }
Timestamp =
T.type_alias { ::ActiveRecordMaterializedTypes::Timestamp }

Class Method Summary collapse

Class Method Details

.atomic_swap_refresh?Boolean

Returns:

  • (Boolean)


72
73
74
# File 'lib/activerecord/materialized/module_api.rb', line 72

def atomic_swap_refresh?
  configuration.atomic_swap_refresh
end

.configurationObject



24
25
26
27
28
29
30
31
# File 'lib/activerecord/materialized/module_api.rb', line 24

def configuration
  config = @configuration
  if config.nil?
    config = Configuration.new
    @configuration = T.let(config, T.nilable(Configuration))
  end
  config
end

.configuration=(value) ⇒ Object



77
78
79
# File 'lib/activerecord/materialized/module_api.rb', line 77

def configuration=(value)
  @configuration = T.let(value, T.nilable(Configuration))
end

.configure {|configuration| ... } ⇒ Object

Yields:



45
46
47
# File 'lib/activerecord/materialized/module_api.rb', line 45

def configure(&block)
  yield(configuration)
end

.metadata_table_nameObject



50
51
52
# File 'lib/activerecord/materialized/module_api.rb', line 50

def 
  configuration.
end

.partition_table_nameObject



55
56
57
# File 'lib/activerecord/materialized/module_api.rb', line 55

def partition_table_name
  configuration.partition_table_name
end

.verify_schema!Object



66
67
68
69
# File 'lib/activerecord/materialized/module_api.rb', line 66

def verify_schema!
  registered = Registry.all
  registered.each { |view_class| SchemaVerifier.new(view_class).verify! }
end