anycable-rails 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d2c1f822cbb79135290b3c404544d937f0f083751657057b7bdd4445a33a95f1
4
- data.tar.gz: ae4f5e42da49c8f668ee2cf56a434e30872d04cee9bc3596f914fb2e48404ac1
3
+ metadata.gz: 1c58ca24c6710071b8a90eee6a0d84ba9ec3069d0fb86fecebdab3cfba9fe1d3
4
+ data.tar.gz: f6ca1937e8cf821d3ded458db84cbfc83840ad45af266c04f32388e2ecec621d
5
5
  SHA512:
6
- metadata.gz: 55bb99bacfdbd2b29120e29598aedc467f56325096602c7713bc2bfee9c4c40f826089ee4dd4d76e80d7171bdd1989db0d21c002edae0e429174509d24f8d836
7
- data.tar.gz: 2ee8318ebd5c27dd95b21bd784c75d0d78da08538f1dd466235b889485d2229a4f35202b036a422466f38422905fbda16f84a028ecb3772e0669ce2bfc203dda
6
+ metadata.gz: 2ffbcc289fe4be6092c67b9953074f57a976f4375b1ac91408723043e9140e041f2fae83d7c3ac7234aa05651db48be4a663a2812b8a6bf2919fa9fc3c127494
7
+ data.tar.gz: b22cc5e90dfdc39369efef3feb46628635397313b203e645a042e810342bdbbe7da85ad900f3626a1d99ee85da8b4e9629be398aa68970758aeea78ff8fa95b5
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## master
4
4
 
5
+ ## 1.0.2 (2020-09-08)
6
+
7
+ - Added missing channel state support to `#unsubscribed` callbacks. ([@palkan][])
8
+
5
9
  ## 1.0.1 (2020-07-07)
6
10
 
7
11
  - Fixed patching Action Cable testing classes. ([@palkan][])
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
  [![Gem Version](https://badge.fury.io/rb/anycable-rails.svg)](https://rubygems.org/gems/anycable-rails)
3
3
  [![Build](https://github.com/anycable/anycable-rails/workflows/Build/badge.svg)](https://github.com/anycable/anycable-rails/actions)
4
4
  [![Gitter](https://img.shields.io/badge/gitter-join%20chat%20%E2%86%92-brightgreen.svg)](https://gitter.im/anycable/Lobby)
5
- [![Documentation](https://img.shields.io/badge/docs-link-brightgreen.svg)](https://docs.anycable.io/v1/#/ruby/rails)
5
+ [![Documentation](https://img.shields.io/badge/docs-link-brightgreen.svg)](https://docs.anycable.io/#/rails/getting_started)
6
6
 
7
7
  # AnyCable Rails
8
8
 
@@ -14,9 +14,9 @@ You can even use Action Cable in development and not be afraid of [compatibility
14
14
 
15
15
  **Important** This is a readme for the upcoming v1.0 release. For v0.6.x see the readme from the [0-6-stable](https://github.com/anycable/anycable-rails/tree/0-6-stable) branch.
16
16
 
17
- <!-- 💾 [Example Application](https://github.com/anycable/anycable_demo) -->
17
+ 💾 [Example Application](https://github.com/anycable/anycable_rails_demo)
18
18
 
19
- 📑 [Documentation](https://docs.anycable.io/v1/#/ruby/rails).
19
+ 📑 [Documentation](https://docs.anycable.io/#/rails/getting_started).
20
20
 
21
21
  <a href="https://evilmartians.com/">
22
22
  <img src="https://evilmartians.com/badges/sponsored-by-evil-martians.svg" alt="Sponsored by Evil Martians" width="236" height="54"></a>
@@ -83,17 +83,17 @@ $ bundle exec anycable
83
83
  $ RAILS_ENV=production bundle exec anycable
84
84
  ```
85
85
 
86
- And, finally, run AnyCable WebSocket server, e.g. [anycable-go](https://docs.anycable.io/v1/#/anycable-go/getting_started):
86
+ And, finally, run AnyCable WebSocket server, e.g. [anycable-go](https://docs.anycable.io/#/v1/anycable-go/getting_started):
87
87
 
88
88
  ```sh
89
89
  anycable-go --host=localhost --port=3334
90
90
  ```
91
91
 
92
- See [documentation](https://docs.anycable.io/v1/#/ruby/rails) for more information on AnyCable + Rails usage.
92
+ See [documentation](https://docs.anycable.io/#/rails/getting_started) for more information on AnyCable + Rails usage.
93
93
 
94
94
  ## Action Cable Compatibility
95
95
 
96
- See [documentation](https://docs.anycable.io/v1/#/ruby/compatibility).
96
+ See [documentation](https://docs.anycable.io/#/rails/compatibility).
97
97
 
98
98
  ## Contributing
99
99
 
@@ -31,7 +31,7 @@ module ActionCable
31
31
  end
32
32
  end
33
33
 
34
- def initialize(socket, env, identifiers: "{}", subscriptions: [])
34
+ def initialize(socket, env, identifiers: "{}", subscriptions: nil)
35
35
  if env
36
36
  # If env is set, then somehow we're in the context of Action Cable
37
37
  # Return and print a warning in #process
@@ -51,8 +51,15 @@ module ActionCable
51
51
  @socket = socket
52
52
  @subscriptions = ActionCable::Connection::Subscriptions.new(self)
53
53
 
54
- # Initialize channels if any
55
- subscriptions.each { |id| @subscriptions.fetch(id) }
54
+ return unless subscriptions
55
+
56
+ # Initialize channels (for disconnect)
57
+ subscriptions.each do |id|
58
+ channel = @subscriptions.fetch(id)
59
+ next unless socket.istate[id]
60
+
61
+ channel.__istate__ = ActiveSupport::JSON.decode(socket.istate[id])
62
+ end
56
63
  end
57
64
 
58
65
  def process
@@ -64,7 +71,7 @@ module ActionCable
64
71
 
65
72
  def invalid_request_message
66
73
  "You're trying to connect to Action Cable server while using AnyCable. " \
67
- "See https://docs.anycable.io/v1/#/troubleshooting?id=server-raises-an-argumenterror-exception-when-client-tries-to-connect"
74
+ "See https://docs.anycable.io/#/troubleshooting?id=server-raises-an-argumenterror-exception-when-client-tries-to-connect"
68
75
  end
69
76
 
70
77
  def handle_open
@@ -10,11 +10,11 @@ module AnyCable
10
10
  class_eval <<~RUBY, __FILE__, __LINE__ + 1
11
11
  def #{name}
12
12
  return @#{name} if instance_variable_defined?(:@#{name})
13
- @#{name} = AnyCable::Rails.deserialize(connection.socket.istate["#{name}"], json: true) if connection.anycable_socket
13
+ @#{name} = AnyCable::Rails.deserialize(__istate__["#{name}"], json: true) if connection.anycable_socket
14
14
  end
15
15
 
16
16
  def #{name}=(val)
17
- connection.socket.istate["#{name}"] = AnyCable::Rails.serialize(val, json: true) if connection.anycable_socket
17
+ __istate__["#{name}"] = AnyCable::Rails.serialize(val, json: true) if connection.anycable_socket
18
18
  instance_variable_set(:@#{name}, val)
19
19
  end
20
20
  RUBY
@@ -36,6 +36,13 @@ module AnyCable
36
36
  def self.included(base)
37
37
  base.extend ClassMethods
38
38
  end
39
+
40
+ # Make it possible to provide istate explicitly for a channel instance
41
+ attr_writer :__istate__
42
+
43
+ def __istate__
44
+ @__istate__ ||= connection.socket.istate
45
+ end
39
46
  end
40
47
  end
41
48
  end
@@ -34,6 +34,7 @@ module AnyCable
34
34
  diff = instance_variables - was_ivars
35
35
 
36
36
  if self.class.respond_to?(:channel_state_attributes)
37
+ diff.delete(:@__istate__)
37
38
  diff.delete_if { |ivar| self.class.channel_state_attributes.include?(:"#{ivar.to_s.sub(/^@/, "")}") }
38
39
  end
39
40
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module AnyCable
4
4
  module Rails
5
- VERSION = "1.0.1"
5
+ VERSION = "1.0.2"
6
6
  end
7
7
  end
@@ -8,7 +8,7 @@ module AnyCableRailsGenerators
8
8
  namespace "anycable:setup"
9
9
  source_root File.expand_path("templates", __dir__)
10
10
 
11
- DOCS_ROOT = "https://docs.anycable.io/v1/#"
11
+ DOCS_ROOT = "https://docs.anycable.io/#"
12
12
  DEVELOPMENT_METHODS = %w[skip local docker].freeze
13
13
  SERVER_SOURCES = %w[skip brew binary].freeze
14
14
 
@@ -118,7 +118,7 @@ module AnyCableRailsGenerators
118
118
  def stimulus_reflex
119
119
  return unless stimulus_reflex?
120
120
 
121
- say_status :help, "⚠️ Please, check out the documentation on using AnyCable with Stimulus Reflex: https://docs.anycable.io/v1/#/ruby/stimulus_reflex"
121
+ say_status :help, "⚠️ Please, check out the documentation on using AnyCable with Stimulus Reflex: https://docs.anycable.io/#/rails/stimulus_reflex"
122
122
  end
123
123
 
124
124
  def rubocop_compatibility
@@ -126,7 +126,7 @@ module AnyCableRailsGenerators
126
126
 
127
127
  say_status :info, "🤖 Running static compatibility checks with RuboCop"
128
128
  res = run "bundle exec rubocop -r 'anycable/rails/compatibility/rubocop' --only AnyCable/InstanceVars,AnyCable/PeriodicalTimers,AnyCable/InstanceVars"
129
- say_status :help, "⚠️ Please, take a look at the icompatibilities above and fix them. See https://docs.anycable.io/v1/#/ruby/compatibility" unless res
129
+ say_status :help, "⚠️ Please, take a look at the icompatibilities above and fix them. See https://docs.anycable.io/#/rails/compatibility" unless res
130
130
  end
131
131
 
132
132
  def finish
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: anycable-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - palkan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-07 00:00:00.000000000 Z
11
+ date: 2020-09-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: anycable