module FeatureChannel::Subscriber

Public Class Methods

process(topic, message) click to toggle source
# File lib/feature_channel/subscriber.rb, line 9
def process(topic, message)
  payload = message_decode(message)
  model = feature_model(payload['feature'])

  return unless accept_message? model

  processor =
    Subscriber::MessageProcessor.new(message: payload, model: model)

  processor.run!
end

Private Class Methods

accept_message?(model_klass) click to toggle source
# File lib/feature_channel/subscriber.rb, line 23
def accept_message?(model_klass)
  !!model_klass
end
feature_model(feature) click to toggle source
# File lib/feature_channel/subscriber.rb, line 27
def feature_model(feature)
  features = FeatureChannel.features
  features[feature] ? Object.const_get(features[feature]) : nil
end
message_decode(message) click to toggle source
# File lib/feature_channel/subscriber.rb, line 32
def message_decode(message)
  MessagePack.unpack(message)
end