Module: Upkeep::Runtime

Defined in:
lib/upkeep/runtime.rb

Defined Under Namespace

Modules: Ambient, AttributeObserver, ChangeEvents, ChangeLog, CookieObserver, CurrentAttributesClassObserver, Install, Observation, PersistenceObserver, RelationObserver, RequestObserver, SessionObserver, WardenObserver Classes: Current, ObservedHash, ObservedRequest, ObservedWarden, Recorder, RelationProvenance

Class Method Summary collapse

Class Method Details

.wrap_current_attribute_readers(klass, names) ⇒ Object



1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
# File 'lib/upkeep/runtime.rb', line 1055

def wrap_current_attribute_readers(klass, names)
  wrapped = klass.instance_variable_get(:@upkeep_wrapped_current_attributes) || {}

  names.each do |name|
    name = name.to_sym
    next if wrapped[name]
    next unless klass.method_defined?(name)

    original_reader = klass.instance_method(name)
    klass.define_method(name) do
      value = original_reader.bind_call(self)
      Runtime::Ambient.record_current_attribute(klass.name || klass.inspect, name, value)
      value
    end
    wrapped[name] = true
  end

  klass.instance_variable_set(:@upkeep_wrapped_current_attributes, wrapped)
end