module Putter::Watcher

Public Class Methods

class_proxy(klass) click to toggle source
# File lib/putter/watcher.rb, line 29
def self.class_proxy(klass)
  proxy = MethodProxy.new

  Putter::Watcher.methods_for(klass).each do |method|
    data = ProxyMethodData.new(label: Putter::Watcher.label_for(klass), method: method)
    add_putter_method_to_proxy(proxy, data)
  end

  proxy
end
label_for(klass) click to toggle source
# File lib/putter/watcher.rb, line 21
def self.label_for(klass)
  @registry[klass].label
end
methods_for(klass) click to toggle source
# File lib/putter/watcher.rb, line 25
def self.methods_for(klass)
  @registry[klass].proxy_methods
end
registry() click to toggle source
# File lib/putter/watcher.rb, line 17
def self.registry
  @registry
end
watch(obj, options={}) click to toggle source
# File lib/putter/watcher.rb, line 7
def self.watch(obj, options={})
  data = WatcherData.new(options, obj)
  @registry[obj.singleton_class] = data

  class << obj
    prepend InstanceFollower
    prepend Putter::Watcher.class_proxy(self)
  end
end