Module: Upkeep::Runtime

Defined in:
lib/upkeep/runtime.rb

Defined Under Namespace

Modules: Ambient, AttributeObserver, CacheKeyObserver, 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



1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
# File 'lib/upkeep/runtime.rb', line 1133

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