Class: ActiveRecord::MigrationContext
Relationships & Source Files | |
Inherits: | Object |
Defined in: | activerecord/lib/active_record/migration.rb |
Overview
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.
Class Method Summary
Instance Attribute Summary
- #internal_metadata readonly
- #migrations_paths readonly
- #schema_migration readonly
Instance Method Summary
-
#migrate(target_version = nil, &block)
Runs the migrations in the
migrations_path
.
Constructor Details
.new(migrations_paths, schema_migration = nil, internal_metadata = nil) ⇒ MigrationContext
# File 'activerecord/lib/active_record/migration.rb', line 1214
def initialize(migrations_paths, schema_migration = nil, = nil) @migrations_paths = migrations_paths @schema_migration = schema_migration || SchemaMigration.new(connection_pool) @internal_metadata = || InternalMetadata.new(connection_pool) end
Instance Attribute Details
#internal_metadata (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/migration.rb', line 1212
attr_reader :migrations_paths, :schema_migration, :
#migrations_paths (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/migration.rb', line 1212
attr_reader :migrations_paths, :schema_migration, :
#schema_migration (readonly)
[ GitHub ]# File 'activerecord/lib/active_record/migration.rb', line 1212
attr_reader :migrations_paths, :schema_migration, :
Instance Method Details
#migrate(target_version = nil, &block)
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
.
# File 'activerecord/lib/active_record/migration.rb', line 1233
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