Module: LazyObservers

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

Defined Under Namespace

Modules: InheritedDebugger, InheritedNotifier Classes: Railtie

Constant Summary collapse

VERSION =
'0.2.0'

Class Method Summary collapse

Class Method Details

.check_classesObject

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



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

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

.clearObject



40
41
42
43
# File 'lib/lazy_observers.rb', line 40

def self.clear
  @observers = {}
  @loaded = []
end

.debug_active_record_loadingObject



36
37
38
# File 'lib/lazy_observers.rb', line 36

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

.observed_loaded(klass) ⇒ Object



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

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

.observer_loaded(observer, classes) ⇒ Object



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

def self.observer_loaded(observer, classes)
  observers[observer] = classes
end

.observer_ready(observer, classes) ⇒ Object



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

def self.observer_ready(observer, classes)
  loaded.each do |klass, name|
    connect!(observer, klass) if classes.include?(name)
  end
end

.on_load(observed, &block) ⇒ Object



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

def self.on_load(observed, &block)
  on_load_callbacks[observed] ||= []
  on_load_callbacks[observed] << block
end