class OneOff::Migrator

Public Class Methods

db_versions() click to toggle source
# File lib/one_off/migrator.rb, line 15
def db_versions
  @db_versions ||= OneOff::Task.pluck(:version).map(&:to_i)
end
matching(pattern) click to toggle source
# File lib/one_off/migrator.rb, line 23
def matching(pattern)
  OneOff::File.all.select { |f| f.filename.match? pattern }
end
pending_files() click to toggle source
# File lib/one_off/migrator.rb, line 19
def pending_files
  OneOff::File.all.index_by(&:version).except(*db_versions).values
end
run(files: pending_files, async: true) click to toggle source
# File lib/one_off/migrator.rb, line 6
def run(files: pending_files, async: true)
  files.sort_by(&:version).each do |file|
    method = ActiveModel::Type::Boolean.new.cast(async) ? :perform_later : :perform_now
    OneOff::ExecutorJob.method(method).call(file)
    Rails.logger.info "=== Queued one_off task #{file.task_name}"
    OneOff::Task.create_or_find_by!(version: file.version)
  end
end