actioncable 5.0.0.rc1 → 5.0.0.rc2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/lib/action_cable/connection/subscriptions.rb +3 -3
- data/lib/action_cable/engine.rb +2 -5
- data/lib/action_cable/gem_version.rb +1 -1
- data/lib/action_cable/server/base.rb +3 -13
- data/lib/action_cable/server/configuration.rb +1 -9
- data/lib/rails/generators/channel/channel_generator.rb +2 -1
- data/lib/rails/generators/channel/templates/assets/channel.js +18 -0
- metadata +20 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c6b94adefd33df52bd3071fc352f3e02005f5f3d
|
4
|
+
data.tar.gz: a92b0ef36b341b4c69e886c74aca629187ba6237
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: af38e63777c21351f22aa57d2f5599a6bc39fffb2ba39950c57c46c93f23ebbef390b8290bc9cf68e464004d2aab1b9d47f447cf33fb3527250fbb3e58175759
|
7
|
+
data.tar.gz: 771f3def063419544f25963795cb3c972467a7de86d5f002be0147922399ed353ad602c924aaeb299174df7734aace7a22d1811d05460e0cbc419989f9837ad8
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
## Rails 5.0.0.rc2 (June 22, 2016) ##
|
2
|
+
|
3
|
+
|
4
|
+
* Fix development reloading support: new cable connections are now correctly
|
5
|
+
dispatched to the reloaded channel class, instead of using a cached reference
|
6
|
+
to the originally-loaded version.
|
7
|
+
|
8
|
+
*Matthew Draper*
|
9
|
+
|
10
|
+
|
1
11
|
## Rails 5.0.0.rc1 (May 06, 2016) ##
|
2
12
|
|
3
13
|
* No changes.
|
@@ -26,12 +26,12 @@ module ActionCable
|
|
26
26
|
id_key = data['identifier']
|
27
27
|
id_options = ActiveSupport::JSON.decode(id_key).with_indifferent_access
|
28
28
|
|
29
|
-
subscription_klass =
|
29
|
+
subscription_klass = id_options[:channel].safe_constantize
|
30
30
|
|
31
|
-
if subscription_klass
|
31
|
+
if subscription_klass && ActionCable::Channel::Base >= subscription_klass
|
32
32
|
subscriptions[id_key] ||= subscription_klass.new(connection, id_key, id_options)
|
33
33
|
else
|
34
|
-
logger.error "Subscription class not found
|
34
|
+
logger.error "Subscription class not found: #{id_options[:channel].inspect}"
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
data/lib/action_cable/engine.rb
CHANGED
@@ -31,11 +31,8 @@ module ActionCable
|
|
31
31
|
self.cable = Rails.application.config_for(config_path).with_indifferent_access
|
32
32
|
end
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
end
|
37
|
-
|
38
|
-
self.channel_paths = Rails.application.paths['app/channels'].existent
|
34
|
+
previous_connection_class = self.connection_class
|
35
|
+
self.connection_class = -> { 'ApplicationCable::Connection'.safe_constantize || previous_connection_class.call }
|
39
36
|
|
40
37
|
options.each { |k,v| send("#{k}=", v) }
|
41
38
|
end
|
@@ -19,13 +19,13 @@ module ActionCable
|
|
19
19
|
|
20
20
|
def initialize
|
21
21
|
@mutex = Monitor.new
|
22
|
-
@remote_connections = @event_loop = @worker_pool = @
|
22
|
+
@remote_connections = @event_loop = @worker_pool = @pubsub = nil
|
23
23
|
end
|
24
24
|
|
25
25
|
# Called by Rack to setup the server.
|
26
26
|
def call(env)
|
27
27
|
setup_heartbeat_timer
|
28
|
-
config.connection_class.new(self, env).process
|
28
|
+
config.connection_class.call.new(self, env).process
|
29
29
|
end
|
30
30
|
|
31
31
|
# Disconnect all the connections identified by `identifiers` on this server or any others via RemoteConnections.
|
@@ -67,16 +67,6 @@ module ActionCable
|
|
67
67
|
@worker_pool || @mutex.synchronize { @worker_pool ||= ActionCable::Server::Worker.new(max_size: config.worker_pool_size) }
|
68
68
|
end
|
69
69
|
|
70
|
-
# Requires and returns a hash of all of the channel class constants, which are keyed by name.
|
71
|
-
def channel_classes
|
72
|
-
@channel_classes || @mutex.synchronize do
|
73
|
-
@channel_classes ||= begin
|
74
|
-
config.channel_paths.each { |channel_path| require channel_path }
|
75
|
-
config.channel_class_names.each_with_object({}) { |name, hash| hash[name] = name.constantize }
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
70
|
# Adapter used for all streams/broadcasting.
|
81
71
|
def pubsub
|
82
72
|
@pubsub || @mutex.synchronize { @pubsub ||= config.pubsub_adapter.new(self) }
|
@@ -84,7 +74,7 @@ module ActionCable
|
|
84
74
|
|
85
75
|
# All of the identifiers applied to the connection class associated with this server.
|
86
76
|
def connection_identifiers
|
87
|
-
config.connection_class.identifiers
|
77
|
+
config.connection_class.call.identifiers
|
88
78
|
end
|
89
79
|
end
|
90
80
|
|
@@ -8,23 +8,15 @@ module ActionCable
|
|
8
8
|
attr_accessor :disable_request_forgery_protection, :allowed_request_origins
|
9
9
|
attr_accessor :cable, :url, :mount_path
|
10
10
|
|
11
|
-
attr_accessor :channel_paths # :nodoc:
|
12
|
-
|
13
11
|
def initialize
|
14
12
|
@log_tags = []
|
15
13
|
|
16
|
-
@connection_class = ActionCable::Connection::Base
|
14
|
+
@connection_class = -> { ActionCable::Connection::Base }
|
17
15
|
@worker_pool_size = 4
|
18
16
|
|
19
17
|
@disable_request_forgery_protection = false
|
20
18
|
end
|
21
19
|
|
22
|
-
def channel_class_names
|
23
|
-
@channel_class_names ||= channel_paths.collect do |channel_path|
|
24
|
-
Pathname.new(channel_path).basename.to_s.split('.').first.camelize
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
20
|
# Returns constant of subscription adapter specified in config/cable.yml.
|
29
21
|
# If the adapter cannot be found, this will default to the Redis adapter.
|
30
22
|
# Also makes sure proper dependencies are required.
|
@@ -16,7 +16,8 @@ module Rails
|
|
16
16
|
if self.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
21
|
end
|
21
22
|
|
22
23
|
generate_application_cable_files
|
@@ -0,0 +1,18 @@
|
|
1
|
+
App.<%= class_name.underscore %> = App.cable.subscriptions.create("<%= class_name %>Channel", {
|
2
|
+
connected: function() {
|
3
|
+
// Called when the subscription is ready for use on the server
|
4
|
+
},
|
5
|
+
|
6
|
+
disconnected: function() {
|
7
|
+
// Called when the subscription has been terminated by the server
|
8
|
+
},
|
9
|
+
|
10
|
+
received: function(data) {
|
11
|
+
// Called when there's incoming data on the websocket for this channel
|
12
|
+
}<%= actions.any? ? ",\n" : '' %>
|
13
|
+
<% actions.each do |action| -%>
|
14
|
+
<%=action %>: function() {
|
15
|
+
return this.perform('<%= action %>');
|
16
|
+
}<%= action == actions[-1] ? '' : ",\n" %>
|
17
|
+
<% end -%>
|
18
|
+
});
|
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.0.
|
4
|
+
version: 5.0.0.rc2
|
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: 2016-
|
12
|
+
date: 2016-06-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: actionpack
|
@@ -17,14 +17,14 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - '='
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 5.0.0.
|
20
|
+
version: 5.0.0.rc2
|
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.0.
|
27
|
+
version: 5.0.0.rc2
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: nio4r
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,6 +53,20 @@ dependencies:
|
|
53
53
|
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: 0.6.1
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: blade
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 0.5.1
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 0.5.1
|
56
70
|
description: Structure many real-time application concerns into channels over a single
|
57
71
|
WebSocket connection.
|
58
72
|
email:
|
@@ -114,6 +128,7 @@ files:
|
|
114
128
|
- lib/rails/generators/channel/templates/application_cable/connection.rb
|
115
129
|
- lib/rails/generators/channel/templates/assets/cable.js
|
116
130
|
- lib/rails/generators/channel/templates/assets/channel.coffee
|
131
|
+
- lib/rails/generators/channel/templates/assets/channel.js
|
117
132
|
- lib/rails/generators/channel/templates/channel.rb
|
118
133
|
homepage: http://rubyonrails.org
|
119
134
|
licenses:
|
@@ -135,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
135
150
|
version: 1.3.1
|
136
151
|
requirements: []
|
137
152
|
rubyforge_project:
|
138
|
-
rubygems_version: 2.
|
153
|
+
rubygems_version: 2.6.4
|
139
154
|
signing_key:
|
140
155
|
specification_version: 4
|
141
156
|
summary: WebSocket framework for Rails.
|