Class: Sequel::TimestampMigrator
Overview
The migrator used if any migration file version appears to be a timestamp. Stores filenames of migration files, and can figure out which migrations have not been applied and apply them, even if earlier migrations are added after later migrations. If you plan to do that, the responsibility is on you to make sure the migrations don't conflict. Part of the migration extension.
Constant Summary
- DEFAULT_SCHEMA_COLUMN =
:filename- DEFAULT_SCHEMA_TABLE =
:schema_migrations- Error =
Migrator::Error
Constants inherited from Migrator
Migrator::MIGRATION_FILE_PATTERN, Migrator::MIGRATION_SPLITTER, Migrator::MINIMUM_TIMESTAMP
Instance Attribute Summary (collapse)
-
- (Object) applied_migrations
readonly
Array of strings of applied migration filenames.
-
- (Object) migration_tuples
readonly
Get tuples of migrations, filenames, and actions for each migration.
Attributes inherited from Migrator
#column, #db, #directory, #ds, #files, #table, #target
Instance Method Summary (collapse)
-
- (TimestampMigrator) initialize(db, directory, opts = {})
constructor
Set up all state for the migrator instance.
-
- (Object) run
Apply all migration tuples on the database.
Methods inherited from Migrator
Constructor Details
- (TimestampMigrator) initialize(db, directory, opts = {})
Set up all state for the migrator instance
579 580 581 582 583 584 |
# File 'lib/sequel/extensions/migration.rb', line 579 def initialize(db, directory, opts={}) super @target = opts[:target] @applied_migrations = get_applied_migrations @migration_tuples = get_migration_tuples end |
Instance Attribute Details
- (Object) applied_migrations (readonly)
Array of strings of applied migration filenames
573 574 575 |
# File 'lib/sequel/extensions/migration.rb', line 573 def applied_migrations @applied_migrations end |
- (Object) migration_tuples (readonly)
Get tuples of migrations, filenames, and actions for each migration
576 577 578 |
# File 'lib/sequel/extensions/migration.rb', line 576 def migration_tuples @migration_tuples end |
Instance Method Details
- (Object) run
Apply all migration tuples on the database
587 588 589 590 591 592 593 594 595 596 597 598 599 |
# File 'lib/sequel/extensions/migration.rb', line 587 def run migration_tuples.each do |m, f, direction| t = Time.now db.log_info("Begin applying migration #{f}, direction: #{direction}") checked_transaction(m) do m.apply(db, direction) fi = f.downcase direction == :up ? ds.insert(column=>fi) : ds.filter(column=>fi).delete end db.log_info("Finished applying migration #{f}, direction: #{direction}, took #{sprintf('%0.6f', Time.now - t)} seconds") end nil end |