class MigrationUtils
Public Class Methods
apply_migration(context, version, direction)
click to toggle source
# File lib/sequel_tools/migration_utils.rb, line 7 def self.apply_migration(context, version, direction) ( puts 'migration version is missing - aborting.'; exit 1 ) if version.nil? filename = "#{File.basename version, '.rb'}.rb" migrator = find_migrator context, direction migrator.migration_tuples.delete_if{|(m, fn, dir)| fn != filename } unless (size = migrator.migration_tuples.size) == 1 puts "Expected a single unapplied migration for #{filename} but found #{size}. Aborting." exit 1 end migrator.run end
current_version(context)
click to toggle source
# File lib/sequel_tools/migration_utils.rb, line 30 def self.current_version(context) migrator = find_migrator(context) migrator.ds.order(Sequel.desc(migrator.column)).get migrator.column end
find_migrator(context, direction = :up)
click to toggle source
# File lib/sequel_tools/migration_utils.rb, line 19 def self.find_migrator(context, direction = :up) Sequel.extension :migration unless Sequel.respond_to? :migration SequelTools::ActionsManager::Action[:connect_db].run({}, context) unless context[:db] options = { allow_missing_migration_files: true } options[:target] = 0 if direction == :down config = context[:config] options[:table] = config[:migrations_table] if config[:migrations_table] Sequel::Migrator.migrator_class(config[:migrations_location]). new(context[:db], config[:migrations_location], options) end
last_found_migration(context)
click to toggle source
# File lib/sequel_tools/migration_utils.rb, line 35 def self.last_found_migration(context) migrations_path = context[:config][:migrations_location] migrator = find_migrator(context) migrator.ds.order(Sequel.desc(migrator.column)).select_map(migrator.column).find do |fn| File.exist?("#{migrations_path}/#{fn}") end end
migrations_differences(context)
click to toggle source
# File lib/sequel_tools/migration_utils.rb, line 43 def self.migrations_differences(context) config = context[:config] migrations_path = config[:migrations_location] existing = Dir["#{migrations_path}/*.rb"].map{|fn| File.basename fn }.sort migrator = find_migrator context migrated = migrator.ds.select_order_map(migrator.column) unapplied = existing - migrated files_missing = migrated - existing [ unapplied, files_missing ] end