anycable-rails 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
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