Sha256: 42284f10e2f086f6f076864d7f26bdf1aea8121fb92444c37c2154d1e51dff60
Contents?: true
Size: 1.36 KB
Versions: 3
Compression:
Stored size: 1.36 KB
Contents
# frozen_string_literal: true module Loco class Hub PREFIX = 'loco:hub:' attr_reader :raw_members def initialize(name, members = []) @name = "#{PREFIX}#{name}" @raw_members = members.map { |m| serialize m } end class << self def get(name) hub = WsConnectionStorage.current.get "#{PREFIX}#{name}" return nil if hub.blank? new name, JSON.parse(hub) end end def name @name.split(PREFIX).last end def add_member(member) serialized = serialize member return raw_members if raw_members.include? serialized raw_members << serialized save raw_members end def del_member(member) serialized = serialize member return nil unless raw_members.include? serialized raw_members.delete serialized save serialized end def destroy WsConnectionStorage.current.del @name true end def save WsConnectionStorage.current.set @name, raw_members.to_json self end def include?(resource) raw_members.include? serialize(resource) end def members raw_members.map do |str| klass, id = str.split ':' klass.classify.constantize.find_by id: id end end private def serialize(member) WsConnectionManager.new(member).identifier end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
loco-rails-4.1.1 | lib/loco/hub.rb |
loco-rails-4.1.0 | lib/loco/hub.rb |
loco-rails-4.0.0 | lib/loco/hub.rb |