Module: LazyObservers

Defined in:
lib/lazy_observers.rb,
lib/lazy_observers.rb,
lib/lazy_observers/version.rb

Defined Under Namespace

Modules: InheritedDebugger, InheritedNotifier

Constant Summary collapse

VERSION =
'0.0.2'

Class Method Summary collapse

Class Method Details

.check_classesObject

to check you did not specify a class that does not exist



28
29
30
# File 'lib/lazy_observers.rb', line 28

def self.check_classes
  observers.values.flatten.uniq.each { |klass| klass.constantize }
end

.debug_active_record_loadingObject



32
33
34
# File 'lib/lazy_observers.rb', line 32

def self.debug_active_record_loading
  ActiveRecord::Base.send(:extend, LazyObservers::InheritedDebugger)
end

.on_load(class_name, &block) ⇒ Object



22
23
24
25
# File 'lib/lazy_observers.rb', line 22

def self.on_load(class_name, &block)
  on_loads[class_name] ||= []
  on_loads[class_name] << block
end

.register_observed(klass) ⇒ Object



6
7
8
9
10
11
12
13
# File 'lib/lazy_observers.rb', line 6

def self.register_observed(klass)
  class_name = klass.name
  loaded << [klass, class_name]
  observers.each do |observer, observed|
    connect!(observer, klass) if observed.include?(class_name)
  end
  (on_loads[class_name]||[]).each{|block| block.call(klass) }
end

.register_observer(observer, classes) ⇒ Object



15
16
17
18
19
20
# File 'lib/lazy_observers.rb', line 15

def self.register_observer(observer, classes)
  observers[observer] = classes
  loaded.each do |klass, name|
    connect!(observer, klass) if classes.include?(name)
  end
end