Module: AnyCable::Rails::ConnectionState::ClassMethods
- Defined in:
- lib/anycable/rails/channel_state.rb
Instance Method Summary collapse
Instance Method Details
#connection_state_attributes ⇒ Object
75 76 77 78 79 80 81 82 83 84 |
# File 'lib/anycable/rails/channel_state.rb', line 75 def connection_state_attributes return @connection_state_attributes if instance_variable_defined?(:@connection_state_attributes) @connection_state_attributes = if superclass.respond_to?(:connection_state_attributes) superclass.connection_state_attributes.dup else [] end end |
#state_attr_accessor(*names) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/anycable/rails/channel_state.rb', line 55 def state_attr_accessor(*names) names.each do |name| connection_state_attributes << name class_eval " def \#{name}\n return @\#{name} if instance_variable_defined?(:@\#{name})\n return unless anycabled?\n\n val = __cstate__[\"\#{name}\"]\n @\#{name} = val.present? ? AnyCable::Serializer.deserialize(JSON.parse(val)) : nil\n end\n\n def \#{name}=(val)\n __cstate__[\"\#{name}\"] = AnyCable::Serializer.serialize(val).to_json if anycabled?\n instance_variable_set(:@\#{name}, val)\n end\n RUBY\n end\nend\n", __FILE__, __LINE__ + 1 |