module OnlineMigrations::SchemaCache

@private

Public Instance Methods

clear!() click to toggle source
Calls superclass method
# File lib/online_migrations/schema_cache.rb, line 50
def clear!
  super
  clear_renames_cache!
end
clear_data_source_cache!(name) click to toggle source
Calls superclass method
# File lib/online_migrations/schema_cache.rb, line 55
def clear_data_source_cache!(name)
  if renamed_tables.key?(name)
    super(renamed_tables[name])
  end

  if renamed_columns.key?(name)
    super(column_rename_table(name))
  end

  super(name)
  clear_renames_cache!
end
columns(table_name) click to toggle source
Calls superclass method
# File lib/online_migrations/schema_cache.rb, line 16
def columns(table_name)
  if renamed_tables.key?(table_name)
    super(renamed_tables[table_name])
  elsif renamed_columns.key?(table_name)
    columns = super(column_rename_table(table_name))

    old_column_name, new_column_name = renamed_columns[table_name].first.to_a

    old_column = columns.find { |column| column.name == old_column_name }
    new_column = old_column.dup

    # ActiveRecord defines only reader for :name
    new_column.instance_variable_set(:@name, new_column_name)

    # Correspond to the ActiveRecord freezing of each column
    columns << new_column.freeze
  else
    super.reject { |column| column.name.end_with?("_for_type_change") }
  end
end
indexes(table_name) click to toggle source
Calls superclass method
# File lib/online_migrations/schema_cache.rb, line 37
def indexes(table_name)
  # Available only in Active Record 6.0+
  return if !defined?(super)

  if renamed_tables.key?(table_name)
    super(renamed_tables[table_name])
  elsif renamed_columns.key?(table_name)
    super(column_rename_table(table_name))
  else
    super
  end
end
primary_keys(table_name) click to toggle source
Calls superclass method
# File lib/online_migrations/schema_cache.rb, line 6
def primary_keys(table_name)
  if renamed_tables.key?(table_name)
    super(renamed_tables[table_name])
  elsif renamed_columns.key?(table_name)
    super(column_rename_table(table_name))
  else
    super
  end
end

Private Instance Methods

clear_renames_cache!() click to toggle source
# File lib/online_migrations/schema_cache.rb, line 91
def clear_renames_cache!
  @renamed_columns = nil
  @renamed_tables = nil
end
column_rename_table(table_name) click to toggle source
# File lib/online_migrations/schema_cache.rb, line 87
def column_rename_table(table_name)
  "#{table_name}_column_rename"
end
renamed_columns() click to toggle source
# File lib/online_migrations/schema_cache.rb, line 78
def renamed_columns
  @renamed_columns ||= begin
    column_renames = OnlineMigrations.config.column_renames
    column_renames.select do |table_name, _|
      connection.views.include?(table_name)
    end
  end
end
renamed_tables() click to toggle source
# File lib/online_migrations/schema_cache.rb, line 69
def renamed_tables
  @renamed_tables ||= begin
    table_renames = OnlineMigrations.config.table_renames
    table_renames.select do |old_name, _|
      connection.views.include?(old_name)
    end
  end
end