Module: Watchdog::GermanShepard

Defined in:
lib/watchdog/german_shepard.rb

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.createdObject

Returns the value of attribute created.



3
4
5
# File 'lib/watchdog/german_shepard.rb', line 3

def created
  @created
end

Class Method Details

.create_guard(meth, obj) ⇒ Object



6
7
8
9
10
11
12
13
14
15
# File 'lib/watchdog/german_shepard.rb', line 6

def self.create_guard(meth, obj)
  return if created.include?([meth, obj])
  created << [meth, obj]
  meta = class <<obj; self end
  original = meta.instance_method(meth)
  meta.send(:define_method, meth) do |m|
    Watchdog.guard(self, m)
    original.bind(obj).call(m)
  end
end

.extend_object(obj) ⇒ Object



17
18
19
20
21
22
23
24
25
# File 'lib/watchdog/german_shepard.rb', line 17

def self.extend_object(obj)
  if obj.respond_to? :method_added
    create_guard :method_added, obj
  elsif obj.respond_to? :singleton_method_added
    create_guard :singleton_method_added, obj
  else
    super
  end
end