Migration Context
MigrationContext sets the context in which a migration is run.
A migration context requires the path to the migrations is set in the migrations_paths parameter. Optionally a schema_migration class can be provided. Multiple database applications will instantiate a SchemaMigration object per database. From the Rake tasks, Rails will handle this for you.
Attributes
| [R] | internal_metadata | |
| [R] | migrations_paths | |
| [R] | schema_migration |
Class Public methods
new(migrations_paths, schema_migration = nil, internal_metadata = nil) Link
Source: show
# File activerecord/lib/active_record/migration.rb, line 1169 def initialize(migrations_paths, schema_migration = nil, internal_metadata = nil) if schema_migration == SchemaMigration ActiveRecord.deprecator.warn(<<-MSG.squish) SchemaMigration no longer inherits from ActiveRecord::Base. If you want to use the default connection, remove this argument. If you want to use a specific connection, instantiate MigrationContext with the connection's schema migration, for example `MigrationContext.new(path, Dog.connection.schema_migration)`. MSG schema_migration = nil end if internal_metadata == InternalMetadata ActiveRecord.deprecator.warn(<<-MSG.squish) SchemaMigration no longer inherits from ActiveRecord::Base. If you want to use the default connection, remove this argument. If you want to use a specific connection, instantiate MigrationContext with the connection's internal metadata, for example `MigrationContext.new(path, nil, Dog.connection.internal_metadata)`. MSG internal_metadata = nil end @migrations_paths = migrations_paths @schema_migration = schema_migration || SchemaMigration.new(connection) @internal_metadata = internal_metadata || InternalMetadata.new(connection) end
Instance Public methods
migrate(target_version = nil, &block) Link
Runs the migrations in the migrations_path.
If target_version is nil, migrate will run up.
If the current_version and target_version are both 0 then an empty array will be returned and no migrations will be run.
If the current_version in the schema is greater than the target_version, then down will be run.
If none of the conditions are met, up will be run with the target_version.
Source: show
# File activerecord/lib/active_record/migration.rb, line 1210 def migrate(target_version = nil, &block) case when target_version.nil? up(target_version, &block) when current_version == 0 && target_version == 0 [] when current_version > target_version down(target_version, &block) else up(target_version, &block) end end