anycable-rails 0.4.1 → 0.4.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
  SHA1:
3
- metadata.gz: 2e7d4840bcd92e76e1f94add4f95ab50f959b290
4
- data.tar.gz: 929662e352013dc156f026f13c2230d6d42213a1
3
+ metadata.gz: e95bafdd5f71f9fd0de1c480ab2e8f36d2ee1add
4
+ data.tar.gz: 786dd59f4fe28b5b967449f73c4b146dbacdc27a
5
5
  SHA512:
6
- metadata.gz: 9554b7e7a955d1818e81d40a5760628e1688ea038af72f2cb7e5ddde4e21cb2de8a1dcca939fd487f21851acfe9233d74d5454fccfb9571e9f9191955a21de90
7
- data.tar.gz: 04e99ce7c1b15f4a8eb68503536f34a41b8a84ea46f4fb849de0b3f76be87cfa7bbd9cb83bfd0755ff812869656f0d525a20b07a085b861c3244ce75970ed539
6
+ metadata.gz: c601664ce532ee077c6d603b15f657678db51779f93492faa75c95cd76128728e756b953f4ce8615c0858a96febf7b75f0068952b54b41c87852610ca73c0490
7
+ data.tar.gz: e5d9cae48701c693fd1cede2eb635f3da40551969a23aad1d0dcba9d96ed0a310468d093d8273b3bffafc0937a10d67dcafaadb07ea10862fe98c9514d49ac77
@@ -46,6 +46,10 @@ Metrics/LineLength:
46
46
  Exclude:
47
47
  - 'spec/**/*.rb'
48
48
 
49
+ Metrics/BlockLength:
50
+ Exclude:
51
+ - 'spec/**/*.rb'
52
+
49
53
  Rails/Date:
50
54
  Enabled: false
51
55
 
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.require_paths = ["lib"]
19
19
 
20
20
  spec.add_dependency "rails", "~> 5"
21
- spec.add_dependency "anycable", "~>0.4.0"
21
+ spec.add_dependency "anycable", "~>0.4.1"
22
22
 
23
23
  spec.add_development_dependency "bundler", "~> 1"
24
24
  spec.add_development_dependency "rake", "~> 10.0"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- require "action_cable"
2
+ require "action_cable/channel"
3
3
 
4
4
  module ActionCable
5
5
  module Channel
@@ -12,31 +12,13 @@ module ActionCable
12
12
  # noop
13
13
  end
14
14
 
15
- def handle_unsubscribe
16
- connection.subscriptions.remove_subscription(self)
17
- end
18
-
19
- def handle_action(data)
20
- perform_action ActiveSupport::JSON.decode(data)
21
- end
22
-
23
- attr_reader :stop_streams
24
-
25
15
  def stream_from(broadcasting, callback = nil, coder: nil)
26
16
  raise ArgumentError('Unsupported') if callback.present? || coder.present? || block_given?
27
- streams << broadcasting
17
+ connection.socket.stream broadcasting
28
18
  end
29
19
 
30
20
  def stop_all_streams
31
- @stop_streams = true
32
- end
33
-
34
- def streams
35
- @streams ||= []
36
- end
37
-
38
- def stop_streams?
39
- stop_streams == true
21
+ connection.socket.stop_all_streams
40
22
  end
41
23
 
42
24
  def delegate_connection_identifiers
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- require "action_cable"
2
+ require "action_cable/connection"
3
3
  require "anycable/rails/refinements/subscriptions"
4
4
  require "anycable/rails/actioncable/channel"
5
5
 
@@ -8,11 +8,11 @@ module ActionCable
8
8
  class Base # :nodoc:
9
9
  using Anycable::Refinements::Subscriptions
10
10
 
11
- attr_reader :transmissions
11
+ attr_reader :socket
12
12
 
13
13
  class << self
14
- def create(**options)
15
- new(**options)
14
+ def create(socket, **options)
15
+ new(socket, **options)
16
16
  end
17
17
 
18
18
  def identified_by(*identifiers)
@@ -25,25 +25,19 @@ module ActionCable
25
25
  end
26
26
  end
27
27
 
28
- def initialize(env: {}, identifiers: '{}', subscriptions: [])
28
+ def initialize(socket, identifiers: '{}', subscriptions: [])
29
29
  @ids = ActiveSupport::JSON.decode(identifiers)
30
30
 
31
31
  @cached_ids = {}
32
- @env = env
32
+ @env = socket.env
33
33
  @coder = ActiveSupport::JSON
34
- @closed = false
35
- @transmissions = []
34
+ @socket = socket
36
35
  @subscriptions = ActionCable::Connection::Subscriptions.new(self)
37
36
 
38
37
  # Initialize channels if any
39
38
  subscriptions.each { |id| @subscriptions.fetch(id) }
40
39
  end
41
40
 
42
- # Create a channel instance from identifier for the connection
43
- def channel_for(identifier)
44
- subscriptions.fetch(identifier)
45
- end
46
-
47
41
  def handle_open
48
42
  connect if respond_to?(:connect)
49
43
  send_welcome_message
@@ -56,21 +50,33 @@ module ActionCable
56
50
  disconnect if respond_to?(:disconnect)
57
51
  end
58
52
 
59
- def close
60
- @closed = true
53
+ # rubocop:disable Metrics/MethodLength
54
+ def handle_channel_command(identifier, command, data)
55
+ channel = subscriptions.fetch(identifier)
56
+ case command
57
+ when "subscribe"
58
+ channel.handle_subscribe
59
+ !channel.subscription_rejected?
60
+ when "unsubscribe"
61
+ subscriptions.remove_subscription(channel)
62
+ true
63
+ when "message"
64
+ channel.perform_action ActiveSupport::JSON.decode(data)
65
+ true
66
+ else
67
+ false
68
+ end
69
+ rescue Exception # rubocop:disable Lint/RescueException
70
+ false
61
71
  end
72
+ # rubocop:enable Metrics/MethodLength
62
73
 
63
- def closed?
64
- @closed
74
+ def close
75
+ socket.close
65
76
  end
66
77
 
67
78
  def transmit(cable_message)
68
- transmissions << encode(cable_message)
69
- end
70
-
71
- def dispose
72
- @closed = false
73
- transmissions.clear
79
+ socket.transmit encode(cable_message)
74
80
  end
75
81
 
76
82
  # Generate identifiers info.
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  module Anycable
3
3
  module Rails
4
- VERSION = "0.4.1"
4
+ VERSION = "0.4.2"
5
5
  end
6
6
  end
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: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - palkan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-22 00:00:00.000000000 Z
11
+ date: 2017-01-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.4.0
33
+ version: 0.4.1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.4.0
40
+ version: 0.4.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement