Class: DatabaseFlusher::ActiveRecord::DeletionStrategy

Inherits:
Object
  • Object
show all
Defined in:
lib/database_flusher/active_record/deletion_strategy.rb

Defined Under Namespace

Classes: Subscriber

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeDeletionStrategy

Returns a new instance of DeletionStrategy.



43
44
45
# File 'lib/database_flusher/active_record/deletion_strategy.rb', line 43

def initialize
  @tables = Set.new
end

Instance Attribute Details

#tablesObject (readonly)

Returns the value of attribute tables.



10
11
12
# File 'lib/database_flusher/active_record/deletion_strategy.rb', line 10

def tables
  @tables
end

Instance Method Details

#cleanObject



61
62
63
64
65
66
67
68
# File 'lib/database_flusher/active_record/deletion_strategy.rb', line 61

def clean
  return if tables.empty?

  # puts "Cleaning #{tables.inspect}"
  adapter.delete(*tables)

  tables.clear
end

#clean_allObject



70
71
72
# File 'lib/database_flusher/active_record/deletion_strategy.rb', line 70

def clean_all
  adapter.delete(*all_tables)
end

#startObject



47
48
49
50
51
52
# File 'lib/database_flusher/active_record/deletion_strategy.rb', line 47

def start
  @subscriber ||= ActiveSupport::Notifications.subscribe(
    'sql.active_record',
    Subscriber.new(self)
  )
end

#stopObject



54
55
56
57
58
59
# File 'lib/database_flusher/active_record/deletion_strategy.rb', line 54

def stop
  if @subscriber
    ActiveSupport::Notifications.unsubscribe(@subscriber)
    @subscriber = nil
  end
end