class RailsAsyncMigrations::Migration::Lock
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/lock.rb, line 9 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/lock.rb, line 14 def perform return false unless locked_method? return false if unlocked? preserve_method_logics suspend_lock do overwrite_method end end
suspend_lock() { || ... }
click to toggle source
# File lib/rails_async_migrations/migration/lock.rb, line 25 def suspend_lock(&block) unlock yield if block_given? lock end
Private Instance Methods
captured_method()
click to toggle source
# File lib/rails_async_migrations/migration/lock.rb, line 45 def captured_method resource_class.new.method(method_name).clone end
clone_method_name()
click to toggle source
# File lib/rails_async_migrations/migration/lock.rb, line 37 def clone_method_name "async_#{method_name}" end
lock()
click to toggle source
# File lib/rails_async_migrations/migration/lock.rb, line 67 def lock self.locked = true end
lockable?()
click to toggle source
# File lib/rails_async_migrations/migration/lock.rb, line 59 def lockable? unlocked? && locked_method? end
locked()
click to toggle source
# File lib/rails_async_migrations/migration/lock.rb, line 79 def locked resource_class.instance_variable_get(:@locked) end
locked=(value)
click to toggle source
# File lib/rails_async_migrations/migration/lock.rb, line 75 def locked=(value) resource_class.instance_variable_set(:@locked, value) end
locked_method?()
click to toggle source
# File lib/rails_async_migrations/migration/lock.rb, line 63 def locked_method? RailsAsyncMigrations.config.locked_methods.include? method_name end
overwrite_closure()
click to toggle source
# File lib/rails_async_migrations/migration/lock.rb, line 53 def overwrite_closure proc do Overwrite.new(self, __method__).perform end end
overwrite_method()
click to toggle source
# File lib/rails_async_migrations/migration/lock.rb, line 49 def overwrite_method resource_class.define_method(method_name, &overwrite_closure) end
preserve_method_logics()
click to toggle source
# File lib/rails_async_migrations/migration/lock.rb, line 41 def preserve_method_logics resource_class.define_method(clone_method_name, &captured_method) end
unlock()
click to toggle source
# File lib/rails_async_migrations/migration/lock.rb, line 71 def unlock self.locked = false end
unlocked?()
click to toggle source
# File lib/rails_async_migrations/migration/lock.rb, line 33 def unlocked? locked == false end