module ReactiveObservers::Base

add observe methods to appropriate class

class CustomObserver

include ReactiveObservers::Base

def changed(topic, **observer); end

end

Public Instance Methods

add_observer_to_observable(observer, observed, options) click to toggle source

register observer at observed entity @param observer [Class, Object] @param observed [Symbol, Object] @param options [Hash] @return [ReactiveObservers::Observer::Container] observer

# File lib/reactive_observers/base.rb, line 39
def add_observer_to_observable(observer, observed, options)
  ReactiveObservers::Observer::Container.new(observer, observed, options).tap do |observer_container|
    observer_container.observed_klass.register_observer observer_container
  end
end
observe(observed, refine: nil, trigger: ReactiveObservers.configuration.default_trigger, notify: nil, **options) click to toggle source

create class observer for provided active record object or class

CustomObserver.observe(:topics) # observer is observing Topic klass CustomObserver.observe(Topic.first) # observer is observing specific topic

@param observed [Symbol, Object] observed object or symbol defining specific ActiveRecord class @param refine [Proc] lambda or Proc function defining observed object pre-process before It is sent to observer @param trigger [Proc, Symbol] function that is triggered inside observer during notification @param notify [Proc, Symbol] function that is used to initialize appropriate observer objects @param options [Hash] additional arguments such as: on, only, fields or context @return [ReactiveObservers::Observer::Container] observer

# File lib/reactive_observers/base.rb, line 30
def observe(observed, refine: nil, trigger: ReactiveObservers.configuration.default_trigger, notify: nil, **options)
  add_observer_to_observable self, observed, options.merge(refine: refine, trigger: trigger, notify: notify)
end