Class: OneOff::Migrator

Inherits:
Object
  • Object
show all
Defined in:
lib/one_off/migrator.rb

Class Method Summary collapse

Class Method Details

.db_versionsObject

[View source]

15
16
17
# File 'lib/one_off/migrator.rb', line 15

def db_versions
  @db_versions ||= OneOff::Task.pluck(:version).map(&:to_i)
end

.matching(pattern) ⇒ Object

[View source]

23
24
25
# File 'lib/one_off/migrator.rb', line 23

def matching(pattern)
  OneOff::File.all.select { |f| f.filename.match? pattern }
end

.pending_filesObject

[View source]

19
20
21
# 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) ⇒ Object

[View source]

6
7
8
9
10
11
12
13
# 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