actioncable 5.0.7.2 → 5.1.0.beta1

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.
Files changed (47) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +13 -169
  3. data/MIT-LICENSE +1 -1
  4. data/README.md +18 -15
  5. data/lib/action_cable.rb +9 -9
  6. data/lib/action_cable/channel/base.rb +17 -19
  7. data/lib/action_cable/channel/broadcasting.rb +2 -2
  8. data/lib/action_cable/channel/callbacks.rb +1 -1
  9. data/lib/action_cable/channel/naming.rb +2 -1
  10. data/lib/action_cable/channel/periodic_timers.rb +1 -1
  11. data/lib/action_cable/channel/streams.rb +7 -7
  12. data/lib/action_cable/connection.rb +0 -2
  13. data/lib/action_cable/connection/authorization.rb +6 -6
  14. data/lib/action_cable/connection/base.rb +20 -21
  15. data/lib/action_cable/connection/client_socket.rb +16 -16
  16. data/lib/action_cable/connection/identification.rb +1 -1
  17. data/lib/action_cable/connection/internal_channel.rb +2 -2
  18. data/lib/action_cable/connection/message_buffer.rb +2 -0
  19. data/lib/action_cable/connection/stream.rb +5 -5
  20. data/lib/action_cable/connection/stream_event_loop.rb +2 -2
  21. data/lib/action_cable/connection/subscriptions.rb +12 -10
  22. data/lib/action_cable/connection/tagged_logger_proxy.rb +2 -2
  23. data/lib/action_cable/connection/web_socket.rb +5 -3
  24. data/lib/action_cable/engine.rb +4 -4
  25. data/lib/action_cable/gem_version.rb +3 -3
  26. data/lib/action_cable/helpers/action_cable_helper.rb +1 -1
  27. data/lib/action_cable/remote_connections.rb +2 -2
  28. data/lib/action_cable/server.rb +1 -1
  29. data/lib/action_cable/server/base.rb +5 -5
  30. data/lib/action_cable/server/broadcasting.rb +7 -3
  31. data/lib/action_cable/server/configuration.rb +3 -19
  32. data/lib/action_cable/server/worker.rb +3 -3
  33. data/lib/action_cable/subscription_adapter.rb +1 -0
  34. data/lib/action_cable/subscription_adapter/async.rb +1 -1
  35. data/lib/action_cable/subscription_adapter/channel_prefix.rb +26 -0
  36. data/lib/action_cable/subscription_adapter/evented_redis.rb +13 -5
  37. data/lib/action_cable/subscription_adapter/postgresql.rb +4 -4
  38. data/lib/action_cable/subscription_adapter/redis.rb +9 -7
  39. data/lib/action_cable/subscription_adapter/subscriber_map.rb +1 -1
  40. data/lib/action_cable/version.rb +1 -1
  41. data/lib/assets/compiled/action_cable.js +554 -567
  42. data/lib/rails/generators/channel/USAGE +2 -2
  43. data/lib/rails/generators/channel/channel_generator.rb +9 -9
  44. data/lib/rails/generators/channel/templates/assets/cable.js +1 -1
  45. metadata +13 -33
  46. data/lib/action_cable/connection/faye_client_socket.rb +0 -48
  47. data/lib/action_cable/connection/faye_event_loop.rb +0 -44
@@ -3,7 +3,7 @@ Description:
3
3
  Stubs out a new cable channel for the server (in Ruby) and client (in CoffeeScript).
4
4
  Pass the channel name, either CamelCased or under_scored, and an optional list of channel actions as arguments.
5
5
 
6
- Note: Turn on the cable connection in app/assets/javascript/cable.js after generating any channels.
6
+ Note: Turn on the cable connection in app/assets/javascripts/cable.js after generating any channels.
7
7
 
8
8
  Example:
9
9
  ========
@@ -11,4 +11,4 @@ Example:
11
11
 
12
12
  creates a Chat channel class and CoffeeScript asset:
13
13
  Channel: app/channels/chat_channel.rb
14
- Assets: app/assets/javascript/channels/chat.coffee
14
+ Assets: app/assets/javascripts/channels/chat.coffee
@@ -10,35 +10,35 @@ module Rails
10
10
  check_class_collision suffix: "Channel"
11
11
 
12
12
  def create_channel_file
13
- template "channel.rb", File.join('app/channels', class_path, "#{file_name}_channel.rb")
13
+ template "channel.rb", File.join("app/channels", class_path, "#{file_name}_channel.rb")
14
14
 
15
15
  if options[:assets]
16
- if self.behavior == :invoke
16
+ if behavior == :invoke
17
17
  template "assets/cable.js", "app/assets/javascripts/cable.js"
18
18
  end
19
19
 
20
- js_template "assets/channel", File.join('app/assets/javascripts/channels', class_path, "#{file_name}")
20
+ js_template "assets/channel", File.join("app/assets/javascripts/channels", class_path, "#{file_name}")
21
21
  end
22
22
 
23
23
  generate_application_cable_files
24
24
  end
25
25
 
26
- protected
26
+ private
27
27
  def file_name
28
- @_file_name ||= super.gsub(/_channel/i, '')
28
+ @_file_name ||= super.gsub(/_channel/i, "")
29
29
  end
30
30
 
31
31
  # FIXME: Change these files to symlinks once RubyGems 2.5.0 is required.
32
32
  def generate_application_cable_files
33
- return if self.behavior != :invoke
33
+ return if behavior != :invoke
34
34
 
35
35
  files = [
36
- 'application_cable/channel.rb',
37
- 'application_cable/connection.rb'
36
+ "application_cable/channel.rb",
37
+ "application_cable/connection.rb"
38
38
  ]
39
39
 
40
40
  files.each do |name|
41
- path = File.join('app/channels/', name)
41
+ path = File.join("app/channels/", name)
42
42
  template(name, path) if !File.exist?(path)
43
43
  end
44
44
  end
@@ -1,5 +1,5 @@
1
1
  // Action Cable provides the framework to deal with WebSockets in Rails.
2
- // You can generate new channels where WebSocket features live using the rails generate channel command.
2
+ // You can generate new channels where WebSocket features live using the `rails generate channel` command.
3
3
  //
4
4
  //= require action_cable
5
5
  //= require_self
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: actioncable
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.7.2
4
+ version: 5.1.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pratik Naik
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-03-13 00:00:00.000000000 Z
12
+ date: 2017-02-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
@@ -17,34 +17,28 @@ dependencies:
17
17
  requirements:
18
18
  - - '='
19
19
  - !ruby/object:Gem::Version
20
- version: 5.0.7.2
20
+ version: 5.1.0.beta1
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - '='
26
26
  - !ruby/object:Gem::Version
27
- version: 5.0.7.2
27
+ version: 5.1.0.beta1
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: nio4r
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: '1.2'
35
- - - "<"
32
+ - - "~>"
36
33
  - !ruby/object:Gem::Version
37
- version: '3.0'
34
+ version: '2.0'
38
35
  type: :runtime
39
36
  prerelease: false
40
37
  version_requirements: !ruby/object:Gem::Requirement
41
38
  requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- version: '1.2'
45
- - - "<"
39
+ - - "~>"
46
40
  - !ruby/object:Gem::Version
47
- version: '3.0'
41
+ version: '2.0'
48
42
  - !ruby/object:Gem::Dependency
49
43
  name: websocket-driver
50
44
  requirement: !ruby/object:Gem::Requirement
@@ -59,20 +53,6 @@ dependencies:
59
53
  - - "~>"
60
54
  - !ruby/object:Gem::Version
61
55
  version: 0.6.1
62
- - !ruby/object:Gem::Dependency
63
- name: blade
64
- requirement: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: 0.5.1
69
- type: :development
70
- prerelease: false
71
- version_requirements: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: 0.5.1
76
56
  description: Structure many real-time application concerns into channels over a single
77
57
  WebSocket connection.
78
58
  email:
@@ -97,8 +77,6 @@ files:
97
77
  - lib/action_cable/connection/authorization.rb
98
78
  - lib/action_cable/connection/base.rb
99
79
  - lib/action_cable/connection/client_socket.rb
100
- - lib/action_cable/connection/faye_client_socket.rb
101
- - lib/action_cable/connection/faye_event_loop.rb
102
80
  - lib/action_cable/connection/identification.rb
103
81
  - lib/action_cable/connection/internal_channel.rb
104
82
  - lib/action_cable/connection/message_buffer.rb
@@ -121,6 +99,7 @@ files:
121
99
  - lib/action_cable/subscription_adapter.rb
122
100
  - lib/action_cable/subscription_adapter/async.rb
123
101
  - lib/action_cable/subscription_adapter/base.rb
102
+ - lib/action_cable/subscription_adapter/channel_prefix.rb
124
103
  - lib/action_cable/subscription_adapter/evented_redis.rb
125
104
  - lib/action_cable/subscription_adapter/inline.rb
126
105
  - lib/action_cable/subscription_adapter/postgresql.rb
@@ -151,11 +130,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
151
130
  version: 2.2.2
152
131
  required_rubygems_version: !ruby/object:Gem::Requirement
153
132
  requirements:
154
- - - ">="
133
+ - - ">"
155
134
  - !ruby/object:Gem::Version
156
- version: '0'
135
+ version: 1.3.1
157
136
  requirements: []
158
- rubygems_version: 3.0.1
137
+ rubyforge_project:
138
+ rubygems_version: 2.6.10
159
139
  signing_key:
160
140
  specification_version: 4
161
141
  summary: WebSocket framework for Rails.
@@ -1,48 +0,0 @@
1
- require 'faye/websocket'
2
-
3
- module ActionCable
4
- module Connection
5
- class FayeClientSocket
6
- def initialize(env, event_target, stream_event_loop, protocols)
7
- @env = env
8
- @event_target = event_target
9
- @protocols = protocols
10
-
11
- @faye = nil
12
- end
13
-
14
- def alive?
15
- @faye && @faye.ready_state == Faye::WebSocket::API::OPEN
16
- end
17
-
18
- def transmit(data)
19
- connect
20
- @faye.send data
21
- end
22
-
23
- def close
24
- @faye && @faye.close
25
- end
26
-
27
- def protocol
28
- @faye && @faye.protocol
29
- end
30
-
31
- def rack_response
32
- connect
33
- @faye.rack_response
34
- end
35
-
36
- private
37
- def connect
38
- return if @faye
39
- @faye = Faye::WebSocket.new(@env, @protocols)
40
-
41
- @faye.on(:open) { |event| @event_target.on_open }
42
- @faye.on(:message) { |event| @event_target.on_message(event.data) }
43
- @faye.on(:close) { |event| @event_target.on_close(event.reason, event.code) }
44
- @faye.on(:error) { |event| @event_target.on_error(event.message) }
45
- end
46
- end
47
- end
48
- end
@@ -1,44 +0,0 @@
1
- require 'thread'
2
-
3
- require 'eventmachine'
4
- EventMachine.epoll if EventMachine.epoll?
5
- EventMachine.kqueue if EventMachine.kqueue?
6
-
7
- module ActionCable
8
- module Connection
9
- class FayeEventLoop
10
- @@mutex = Mutex.new
11
-
12
- def timer(interval, &block)
13
- ensure_reactor_running
14
- EMTimer.new(::EM::PeriodicTimer.new(interval, &block))
15
- end
16
-
17
- def post(task = nil, &block)
18
- task ||= block
19
-
20
- ensure_reactor_running
21
- ::EM.next_tick(&task)
22
- end
23
-
24
- private
25
- def ensure_reactor_running
26
- return if EventMachine.reactor_running?
27
- @@mutex.synchronize do
28
- Thread.new { EventMachine.run } unless EventMachine.reactor_running?
29
- Thread.pass until EventMachine.reactor_running?
30
- end
31
- end
32
-
33
- class EMTimer
34
- def initialize(inner)
35
- @inner = inner
36
- end
37
-
38
- def shutdown
39
- @inner.cancel
40
- end
41
- end
42
- end
43
- end
44
- end