class Sequel::IntegerMigrator

  1. lib/sequel/extensions/migration.rb
Superclass: Migrator

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.

Methods

Public Class

  1. new

Public Instance

  1. current
  2. direction
  3. is_current?
  4. migrations
  5. run

Constants

Error = Migrator::Error  

Attributes

current [R]

The current version for this migrator

direction [R]

The direction of the migrator, either :up or :down

migrations [R]

The migrations used by this migrator

Public Class methods

new(db, directory, opts=OPTS)

Set up all state for the migrator instance

[show source]
    # File lib/sequel/extensions/migration.rb
522 def initialize(db, directory, opts=OPTS)
523   super
524   @current = opts[:current] || current_migration_version
525 
526   latest_version = latest_migration_version
527   @target = if opts[:target]
528     opts[:target]
529   elsif opts[:relative]
530     @current + opts[:relative]
531   else
532     latest_version
533   end
534 
535   raise(Error, "No target and/or latest version available, probably because no migration files found or filenames don't follow the migration filename convention") unless target && latest_version
536 
537   if @target > latest_version
538     @target = latest_version
539   elsif @target < 0
540     @target = 0
541   end
542 
543   @direction = current < target ? :up : :down
544 
545   if @direction == :down && @current >= @files.length
546     raise Migrator::Error, "Missing migration version(s) needed to migrate down to target version (current: #{current}, target: #{target})"
547   end
548 
549   @migrations = get_migrations
550 end

Public Instance methods

is_current?()

The integer migrator is current if the current version is the same as the target version.

[show source]
    # File lib/sequel/extensions/migration.rb
553 def is_current?
554   current_migration_version == target
555 end
run()

Apply all migrations on the database

[show source]
    # File lib/sequel/extensions/migration.rb
558 def run
559   migrations.zip(version_numbers).each do |m, v|
560     timer = Sequel.start_timer
561     db.log_info("Begin applying migration version #{v}, direction: #{direction}")
562     checked_transaction(m) do
563       m.apply(db, direction)
564       set_migration_version(up? ? v : v-1)
565     end
566     db.log_info("Finished applying migration version #{v}, direction: #{direction}, took #{sprintf('%0.6f', Sequel.elapsed_seconds_since(timer))} seconds")
567   end
568   
569   target
570 end