Class: ActiveRecord::SchemaMigration

Inherits:
Base
  • Object
show all
Defined in:
lib/active_record/schema_migration.rb

Overview

This class is used to create a table that keeps track of which migrations have been applied to a given database. When a migration is run, its schema number is inserted in to the ‘SchemaMigration.table_name` so it doesn’t need to be executed the next time.

Constant Summary

Constants included from ConnectionHandling

ConnectionHandling::DEFAULT_ENV, ConnectionHandling::RAILS_ENV

Constants included from Querying

Querying::QUERYING_METHODS

Constants included from SecureToken

ActiveRecord::SecureToken::MINIMUM_TOKEN_LENGTH

Constants included from Transactions

Transactions::ACTIONS

Constants included from Callbacks

Callbacks::CALLBACKS

Constants included from AttributeMethods

AttributeMethods::RESTRICTED_CLASS_METHODS

Instance Attribute Summary

Attributes included from ConnectionHandling

#connection_specification_name

Attributes included from Core

#strict_loading_mode

Class Method Summary collapse

Instance Method Summary collapse

Methods included from ConnectionHandling

#clear_cache!, #clear_query_caches_for_current_thread, #connected?, #connected_to, #connected_to?, #connected_to_many, #connecting_to, #connection, #connection_db_config, #connection_pool, #connects_to, #establish_connection, #lookup_connection_handler, #mysql2_connection, #postgresql_connection, #primary_class?, #prohibit_shard_swapping, #remove_connection, #retrieve_connection, #shard_swapping_prohibited?, #sqlite3_connection, #while_preventing_writes

Methods included from QueryCache::ClassMethods

#cache, #uncached

Methods included from Querying

#_load_from_sql, #_query_by_sql, #count_by_sql, #find_by_sql

Methods included from Translation

#i18n_scope, #lookup_ancestors

Methods included from DelegatedType

#delegated_type

Methods included from Explain

#collecting_queries_for_explain, #exec_explain

Methods included from Enum

#enum, extended, #inherited

Methods included from Delegation::DelegateCache

#generate_relation_method, #inherited, #initialize_relation_delegate_cache, #relation_delegate_class

Methods included from Aggregations::ClassMethods

#composed_of

Methods included from Encryption::EncryptableRecord

#ciphertext_for, #decrypt, #encrypt, #encrypted_attribute?

Methods included from Suppressor

registry, #save, #save!

Methods included from SignedId

#signed_id

Methods included from Serialization

#serializable_hash

Methods included from Reflection

add_aggregate_reflection, add_reflection, create

Methods included from NoTouching

applied_to?, apply_to, #no_touching?, #touch, #touch_later

Methods included from TouchLater

#before_committed!, #touch, #touch_later

Methods included from Transactions

#before_committed!, #committed!, #destroy, #rolledback!, #save, #save!, #touch, #transaction, #trigger_transactional_callbacks?, #with_transaction_returning_status

Methods included from NestedAttributes

#_destroy

Methods included from AutosaveAssociation

#changed_for_autosave?, #destroyed_by_association, #destroyed_by_association=, #mark_for_destruction, #marked_for_destruction?, #reload

Methods included from Associations

#association, #association_cached?, eager_load!, #initialize_dup

Methods included from Timestamp

#initialize_dup

Methods included from Callbacks

#destroy, #increment!, #touch

Methods included from AttributeMethods

#[], #[]=, #_has_attribute?, #accessed_fields, #attribute_for_inspect, #attribute_names, #attribute_present?, #attributes, dangerous_attribute_methods, #has_attribute?, #respond_to?

Methods included from Locking::Pessimistic

#lock!, #with_lock

Methods included from Locking::Optimistic

#increment!, #initialize_dup, #locking_enabled?

Methods included from Validations

#save, #save!, #valid?

Methods included from Integration

#cache_key, #cache_key_with_version, #cache_version, #to_param

Methods included from Scoping

#initialize_internals_callback, #populate_with_current_scope_attributes

Methods included from Inheritance

#initialize_dup

Methods included from ModelSchema

derive_join_table_name

Methods included from Persistence

#becomes, #becomes!, #decrement, #decrement!, #delete, #destroy, #destroy!, #destroyed?, #increment, #increment!, #new_record?, #persisted?, #previously_new_record?, #previously_persisted?, #reload, #save, #save!, #toggle, #toggle!, #touch, #update, #update!, #update_attribute, #update_column, #update_columns

Methods included from Core

#<=>, #==, #blank?, #connection_handler, #encode_with, #freeze, #frozen?, #hash, #init_with, #init_with_attributes, #initialize, #initialize_dup, #inspect, #present?, #pretty_print, #readonly!, #readonly?, #slice, #strict_loading!, #strict_loading?, #strict_loading_n_plus_one_only?, #values_at

Class Method Details

.all_versionsObject



41
42
43
# File 'lib/active_record/schema_migration.rb', line 41

def all_versions
  order(:version).pluck(:version)
end

.create_tableObject



21
22
23
24
25
26
27
# File 'lib/active_record/schema_migration.rb', line 21

def create_table
  unless connection.table_exists?(table_name)
    connection.create_table(table_name, id: false) do |t|
      t.string :version, **connection.internal_string_options_for_primary_key
    end
  end
end

.drop_tableObject



29
30
31
# File 'lib/active_record/schema_migration.rb', line 29

def drop_table
  connection.drop_table table_name, if_exists: true
end

.normalize_migration_number(number) ⇒ Object



33
34
35
# File 'lib/active_record/schema_migration.rb', line 33

def normalize_migration_number(number)
  "%.3d" % number.to_i
end

.normalized_versionsObject



37
38
39
# File 'lib/active_record/schema_migration.rb', line 37

def normalized_versions
  all_versions.map { |v| normalize_migration_number v }
end

.primary_keyObject



13
14
15
# File 'lib/active_record/schema_migration.rb', line 13

def primary_key
  "version"
end

.table_exists?Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/active_record/schema_migration.rb', line 45

def table_exists?
  connection.data_source_exists?(table_name)
end

.table_nameObject



17
18
19
# File 'lib/active_record/schema_migration.rb', line 17

def table_name
  "#{table_name_prefix}#{schema_migrations_table_name}#{table_name_suffix}"
end

Instance Method Details

#versionObject



50
51
52
# File 'lib/active_record/schema_migration.rb', line 50

def version
  super.to_i
end