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
518 def initialize(db, directory, opts=OPTS)
519   super
520   @current = opts[:current] || current_migration_version
521   raise(Error, "No current version available") unless current
522 
523   latest_version = latest_migration_version
524   @target = if opts[:target]
525     opts[:target]
526   elsif opts[:relative]
527     @current + opts[:relative]
528   else
529     latest_version
530   end
531 
532   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
533 
534   if @target > latest_version
535     @target = latest_version
536   elsif @target < 0
537     @target = 0
538   end
539 
540   @direction = current < target ? :up : :down
541   @migrations = get_migrations
542 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
545 def is_current?
546   current_migration_version == target
547 end
run ()

Apply all migrations on the database

[show source]
    # File lib/sequel/extensions/migration.rb
550 def run
551   migrations.zip(version_numbers).each do |m, v|
552     timer = Sequel.start_timer
553     db.log_info("Begin applying migration version #{v}, direction: #{direction}")
554     checked_transaction(m) do
555       m.apply(db, direction)
556       set_migration_version(up? ? v : v-1)
557     end
558     db.log_info("Finished applying migration version #{v}, direction: #{direction}, took #{sprintf('%0.6f', Sequel.elapsed_seconds_since(timer))} seconds")
559   end
560   
561   target
562 end