module AnyCable::Rails::ChannelState::ClassMethods
Public Instance Methods
channel_state_attributes()
click to toggle source
# File lib/anycable/rails/channel_state.rb, line 24 def channel_state_attributes return @channel_state_attributes if instance_variable_defined?(:@channel_state_attributes) @channel_state_attributes = if superclass.respond_to?(:channel_state_attributes) superclass.channel_state_attributes.dup else [] end end
state_attr_accessor(*names)
click to toggle source
# File lib/anycable/rails/channel_state.rb, line 7 def state_attr_accessor(*names) names.each do |name| channel_state_attributes << name class_eval <<~RUBY, __FILE__, __LINE__ + 1 def #{name} return @#{name} if instance_variable_defined?(:@#{name}) @#{name} = AnyCable::Rails.deserialize(__istate__["#{name}"], json: true) if connection.anycable_socket end def #{name}=(val) __istate__["#{name}"] = AnyCable::Rails.serialize(val, json: true) if connection.anycable_socket instance_variable_set(:@#{name}, val) end RUBY end end