class RailsAsyncMigrations::Mutators::TriggerCallback

Attributes

instance[R]
method_name[R]

Public Class Methods

new(instance, method_name) click to toggle source
# File lib/rails_async_migrations/mutators/trigger_callback.rb, line 6
def initialize(instance, method_name)
  @instance = instance
  @method_name = method_name
end

Public Instance Methods

perform() click to toggle source

this method can be called multiple times (we should see what manages this actually) if you use up down and change it'll be called 3 times for example

# File lib/rails_async_migrations/mutators/trigger_callback.rb, line 13
def perform
  unless active_record.allowed_direction?
    Tracer.new.verbose "Direction `#{direction}` not allowed."
    return
  end

  enqueue_asynchronous unless already_enqueued?
  check_queue
end

Private Instance Methods

active_record() click to toggle source
# File lib/rails_async_migrations/mutators/trigger_callback.rb, line 44
def active_record
  @active_record ||= Connection::ActiveRecord.new(direction)
end
already_enqueued?() click to toggle source
# File lib/rails_async_migrations/mutators/trigger_callback.rb, line 33
def already_enqueued?
  AsyncSchemaMigration.find_by(
    version: active_record.current_version,
    direction: active_record.current_direction
  )
end
check_queue() click to toggle source
# File lib/rails_async_migrations/mutators/trigger_callback.rb, line 40
def check_queue
  Workers.new(:check_queue).perform
end
direction() click to toggle source
# File lib/rails_async_migrations/mutators/trigger_callback.rb, line 48
def direction
  if instance.reverting?
    :down
  else
    :up
  end
end
enqueue_asynchronous() click to toggle source
# File lib/rails_async_migrations/mutators/trigger_callback.rb, line 25
def enqueue_asynchronous
  AsyncSchemaMigration.create!(
    version: active_record.current_version,
    direction: active_record.current_direction,
    state: 'created'
  )
end