class RailsAsyncMigrations::Migration::Unlock

Attributes

method_name[R]
resource_class[R]

Public Class Methods

new(resource_class, method_name) click to toggle source
# File lib/rails_async_migrations/migration/unlock.rb, line 6
def initialize(resource_class, method_name)
  @resource_class = resource_class
  @method_name = method_name
end

Public Instance Methods

perform() click to toggle source
# File lib/rails_async_migrations/migration/unlock.rb, line 11
def perform
  restore_original_method
end

Private Instance Methods

clone_method_name() click to toggle source
# File lib/rails_async_migrations/migration/unlock.rb, line 29
def clone_method_name
  "async_#{method_name}"
end
method_clone() click to toggle source
# File lib/rails_async_migrations/migration/unlock.rb, line 33
def method_clone
  temporary_instance.method(clone_method_name).clone
end
restore_original_method() click to toggle source
# File lib/rails_async_migrations/migration/unlock.rb, line 17
def restore_original_method
  if valid?
    Lock.new(resource_class, method_name).suspend_lock do
      resource_class.define_method(method_name, &method_clone)
    end
  end
end
temporary_instance() click to toggle source
# File lib/rails_async_migrations/migration/unlock.rb, line 37
def temporary_instance
  @temporary_instance ||= resource_class.new
end
valid?() click to toggle source
# File lib/rails_async_migrations/migration/unlock.rb, line 25
def valid?
  temporary_instance.respond_to? clone_method_name
end