Class: Sequel::TimestampMigrator
- Defined in:
- lib/sequel/extensions/migration.rb
Overview
The migrator used if any migration file version is greater than 20000101.
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
- Error =
Migrator::Error
Constants inherited from Migrator
Migrator::MIGRATION_FILE_PATTERN, Migrator::MUTEX
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
Class Method Summary collapse
-
.run_single(db, path, opts = OPTS) ⇒ Object
Apply the migration in the given file path.
Instance Method Summary collapse
-
#initialize(db, directory, opts = OPTS) ⇒ TimestampMigrator
constructor
Set up all state for the migrator instance.
-
#is_current? ⇒ Boolean
The timestamp migrator is current if there are no migrations to apply in either direction.
-
#run ⇒ Object
Apply all migration tuples on the database.
-
#run_single(path, direction) ⇒ Object
Apply single migration tuple at the given path with the given direction on the database.
Methods inherited from Migrator
apply, check_current, is_current?, migrator_class, run
Constructor Details
#initialize(db, directory, opts = OPTS) ⇒ TimestampMigrator
Set up all state for the migrator instance
706 707 708 709 710 711 712 |
# File 'lib/sequel/extensions/migration.rb', line 706 def initialize(db, directory, opts=OPTS) @allow_migration_number = opts[:allow_migration_number] 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
700 701 702 |
# File 'lib/sequel/extensions/migration.rb', line 700 def applied_migrations @applied_migrations end |
#migration_tuples ⇒ Object (readonly)
Get tuples of migrations, filenames, and actions for each migration
703 704 705 |
# File 'lib/sequel/extensions/migration.rb', line 703 def migration_tuples @migration_tuples end |
Class Method Details
.run_single(db, path, opts = OPTS) ⇒ Object
Apply the migration in the given file path. See Migrator.run for the available options. Additionally, this method supports the :direction option for whether to run the migration up (default) or down.
717 718 719 |
# File 'lib/sequel/extensions/migration.rb', line 717 def self.run_single(db, path, opts=OPTS) new(db, File.dirname(path), opts).run_single(path, opts[:direction] || :up) end |
Instance Method Details
#is_current? ⇒ Boolean
The timestamp migrator is current if there are no migrations to apply in either direction.
723 724 725 |
# File 'lib/sequel/extensions/migration.rb', line 723 def is_current? migration_tuples.empty? end |
#run ⇒ Object
Apply all migration tuples on the database
728 729 730 731 732 733 |
# File 'lib/sequel/extensions/migration.rb', line 728 def run migration_tuples.each do |m, f, direction| apply_migration(m, f, direction) end nil end |
#run_single(path, direction) ⇒ Object
Apply single migration tuple at the given path with the given direction on the database.
737 738 739 740 741 742 743 744 745 746 |
# File 'lib/sequel/extensions/migration.rb', line 737 def run_single(path, direction) migration = load_migration_file(path) file_name = File.basename(path) already_applied = applied_migrations.include?(file_name.downcase) return if direction == :up ? already_applied : !already_applied apply_migration(migration, file_name, direction) nil end |