Class: Sequel::TimestampMigrator
- Defined in:
- lib/sequel/extensions/migration.rb
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 collapse
- 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
-
#applied_migrations ⇒ Object
readonly
Array of strings of applied migration filenames.
-
#migration_tuples ⇒ Object
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
-
#initialize(db, directory, opts = {}) ⇒ TimestampMigrator
constructor
Set up all state for the migrator instance.
-
#run ⇒ Object
Apply all migration tuples on the database.
Methods inherited from Migrator
Constructor Details
#initialize(db, directory, opts = {}) ⇒ TimestampMigrator
Set up all state for the migrator instance
539 540 541 542 543 544 |
# File 'lib/sequel/extensions/migration.rb', line 539 def initialize(db, directory, opts={}) super @target = opts[:target] @applied_migrations = get_applied_migrations @migration_tuples = get_migration_tuples end |
Instance Attribute Details
#applied_migrations ⇒ Object (readonly)
Array of strings of applied migration filenames
533 534 535 |
# File 'lib/sequel/extensions/migration.rb', line 533 def applied_migrations @applied_migrations end |
#migration_tuples ⇒ Object (readonly)
Get tuples of migrations, filenames, and actions for each migration
536 537 538 |
# File 'lib/sequel/extensions/migration.rb', line 536 def migration_tuples @migration_tuples end |
Instance Method Details
#run ⇒ Object
Apply all migration tuples on the database
547 548 549 550 551 552 553 554 555 556 557 558 559 |
# File 'lib/sequel/extensions/migration.rb', line 547 def run migration_tuples.each do |m, f, direction| t = Time.now db.log_info("Begin applying migration #{f}, direction: #{direction}") db.transaction 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 |