Class: Sequel::IntegerMigrator
- Defined in:
- lib/sequel/extensions/migration.rb
Overview
The default migrator, recommended in most cases. Uses a simple incrementing version number starting with 1, where missing or duplicate migration file versions are not allowed. Part of the migration
extension.
Constant Summary collapse
- DEFAULT_SCHEMA_COLUMN =
:version
- DEFAULT_SCHEMA_TABLE =
:schema_info
- Error =
Migrator::Error
Constants inherited from Migrator
Migrator::MIGRATION_FILE_PATTERN, Migrator::MIGRATION_SPLITTER, Migrator::MINIMUM_TIMESTAMP
Instance Attribute Summary collapse
-
#current ⇒ Object
readonly
The current version for this migrator.
-
#direction ⇒ Object
readonly
The direction of the migrator, either :up or :down.
-
#migrations ⇒ Object
readonly
The migrations used by this migrator.
Attributes inherited from Migrator
#column, #db, #directory, #ds, #files, #table, #target
Instance Method Summary collapse
-
#initialize(db, directory, opts = OPTS) ⇒ IntegerMigrator
constructor
Set up all state for the migrator instance.
-
#is_current? ⇒ Boolean
The integer migrator is current if the current version is the same as the target version.
-
#run ⇒ Object
Apply all migrations on the database.
Methods inherited from Migrator
apply, check_current, is_current?, migrator_class, run
Constructor Details
#initialize(db, directory, opts = OPTS) ⇒ IntegerMigrator
Set up all state for the migrator instance
505 506 507 508 509 510 511 512 513 514 515 |
# File 'lib/sequel/extensions/migration.rb', line 505 def initialize(db, directory, opts=OPTS) super @target = opts[:target] || latest_migration_version @current = opts[:current] || current_migration_version raise(Error, "No current version available") unless current raise(Error, "No target version available, probably because no migration files found or filenames don't follow the migration filename convention") unless target @direction = current < target ? :up : :down @migrations = get_migrations end |
Instance Attribute Details
#current ⇒ Object (readonly)
The current version for this migrator
496 497 498 |
# File 'lib/sequel/extensions/migration.rb', line 496 def current @current end |
#direction ⇒ Object (readonly)
The direction of the migrator, either :up or :down
499 500 501 |
# File 'lib/sequel/extensions/migration.rb', line 499 def direction @direction end |
#migrations ⇒ Object (readonly)
The migrations used by this migrator
502 503 504 |
# File 'lib/sequel/extensions/migration.rb', line 502 def migrations @migrations end |
Instance Method Details
#is_current? ⇒ Boolean
The integer migrator is current if the current version is the same as the target version.
518 519 520 |
# File 'lib/sequel/extensions/migration.rb', line 518 def is_current? current_migration_version == target end |
#run ⇒ Object
Apply all migrations on the database
523 524 525 526 527 528 529 530 531 532 533 534 535 |
# File 'lib/sequel/extensions/migration.rb', line 523 def run migrations.zip(version_numbers).each do |m, v| t = Time.now db.log_info("Begin applying migration version #{v}, direction: #{direction}") checked_transaction(m) do m.apply(db, direction) set_migration_version(up? ? v : v-1) end db.log_info("Finished applying migration version #{v}, direction: #{direction}, took #{sprintf('%0.6f', Time.now - t)} seconds") end target end |