Module: Rollgeist::RecordWatchpoints

Defined in:
lib/rollgeist/record_watchpoints.rb

Constant Summary collapse

INSTALLED_IVAR =
:@__rollgeist_watchpoints
SERIALIZATION_BIT =
1
GLOBAL_ID_BIT =
2
SERIALIZATION_ALIAS =
:__rollgeist_original_serializable_hash
SERIALIZATION_STATE =
:@__rollgeist_serialization_visibility
GLOBAL_ID_ALIAS =
:__rollgeist_original_to_global_id
GLOBAL_ID_STATE =
:@__rollgeist_global_id_visibility
INHERITED =
:inherited

Class Method Summary collapse

Class Method Details

.install!(record) ⇒ Object



16
17
18
19
20
21
22
23
24
25
# File 'lib/rollgeist/record_watchpoints.rb', line 16

def install!(record)
  return if record.instance_variable_defined?(INSTALLED_IVAR)

  mask = install_serialization(record)
  mask |= install_global_id(record)
  record.instance_variable_set(INSTALLED_IVAR, mask)
rescue StandardError
  uninstall_mask(record, mask.to_i)
  raise
end

.uninstall!(record) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/rollgeist/record_watchpoints.rb', line 27

def uninstall!(record)
  return unless record.instance_variable_defined?(INSTALLED_IVAR)

  mask = record.instance_variable_get(INSTALLED_IVAR)
  uninstall_mask(record, mask)
  record.remove_instance_variable(INSTALLED_IVAR)
end