actioncable 6.0.3.4 → 6.1.1

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
  SHA256:
3
- metadata.gz: cc65a725a248a9fe0c6f294072569ef28e5d29fb241f1d14601d3b6de13b5c4e
4
- data.tar.gz: c034f018104026984508ecc3bd3d72d0355978bf3ae905e2b951ae5f0b0922fe
3
+ metadata.gz: 7feb4f0b75d0e707652c4c754ad1a7c980c5e83909a0b3cca9f960fb552ff153
4
+ data.tar.gz: 685bc668cc0a266465ef91cfab6e9c7a0c91b3ff3ee62c14aa24212ed74e15d1
5
5
  SHA512:
6
- metadata.gz: 9a10e115d552b1d7ccb4104d8c24741c9adef1e71f04882b29ff79c065629800156721f44b4f6a63c64c5dd2b144bbf2478347bc9ee2337b59a98a6485353d90
7
- data.tar.gz: 16fbadec48859980df5d1bc2f2560096c45df43857cecdd3837a26eae930d989c698a948e26bd0edee28e1c02e09b1af8d2a745679604984ead370819818febc
6
+ metadata.gz: 9a8b51005331c276517a55e4438059ec6a697cc4c7e1e0c21d207370a9e542baac3c8598ab7ef068b4a5b9b1ea037213e70d5a81a720f2462d0260fed342e8b1
7
+ data.tar.gz: cf38227aab29668b58b8fcbe5295b757b9395c9369658667a153f22f4005593ea9291782c8c86f042272e947c33207a4cb2fd4fd19de5281ebb6b1b2ff619b1d
@@ -1,214 +1,45 @@
1
- ## Rails 6.0.3.4 (October 07, 2020) ##
1
+ ## Rails 6.1.1 (January 07, 2021) ##
2
2
 
3
3
  * No changes.
4
4
 
5
5
 
6
- ## Rails 6.0.3.3 (September 09, 2020) ##
6
+ ## Rails 6.1.0 (December 09, 2020) ##
7
7
 
8
- * No changes.
9
-
10
-
11
- ## Rails 6.0.3.2 (June 17, 2020) ##
12
-
13
- * No changes.
14
-
15
-
16
- ## Rails 6.0.3.1 (May 18, 2020) ##
17
-
18
- * No changes.
19
-
20
-
21
- ## Rails 6.0.3 (May 06, 2020) ##
22
-
23
- * No changes.
24
-
25
-
26
- ## Rails 6.0.2.2 (March 19, 2020) ##
27
-
28
- * No changes.
29
-
30
-
31
- ## Rails 6.0.2.1 (December 18, 2019) ##
32
-
33
- * No changes.
34
-
35
-
36
- ## Rails 6.0.2 (December 13, 2019) ##
37
-
38
- * No changes.
39
-
40
-
41
- ## Rails 6.0.1 (November 5, 2019) ##
42
-
43
- * No changes.
44
-
45
-
46
- ## Rails 6.0.0 (August 16, 2019) ##
47
-
48
- * No changes.
49
-
50
-
51
- ## Rails 6.0.0.rc2 (July 22, 2019) ##
52
-
53
- * No changes.
54
-
55
-
56
- ## Rails 6.0.0.rc1 (April 24, 2019) ##
57
-
58
- * No changes.
59
-
60
-
61
- ## Rails 6.0.0.beta3 (March 11, 2019) ##
62
-
63
- * No changes.
64
-
65
-
66
- ## Rails 6.0.0.beta2 (February 25, 2019) ##
67
-
68
- * PostgreSQL subscription adapters now support `channel_prefix` option in cable.yml
69
-
70
- Avoids channel name collisions when multiple apps use the same database for Action Cable.
71
-
72
- *Vladimir Dementyev*
73
-
74
- * Allow passing custom configuration to `ActionCable::Server::Base`.
75
-
76
- You can now create a standalone Action Cable server with a custom configuration
77
- (e.g. to run it in isolation from the default one):
78
-
79
- ```ruby
80
- config = ActionCable::Server::Configuration.new
81
- config.cable = { adapter: "redis", channel_prefix: "custom_" }
82
-
83
- CUSTOM_CABLE = ActionCable::Server::Base.new(config: config)
84
- ```
85
-
86
- Then you can mount it in the `routes.rb` file:
87
-
88
- ```ruby
89
- Rails.application.routes.draw do
90
- mount CUSTOM_CABLE => "/custom_cable"
91
- # ...
92
- end
93
- ```
94
-
95
- *Vladimir Dementyev*
96
-
97
- * Add `:action_cable_connection` and `:action_cable_channel` load hooks.
98
-
99
- You can use them to extend `ActionCable::Connection::Base` and `ActionCable::Channel::Base`
100
- functionality:
101
-
102
- ```ruby
103
- ActiveSupport.on_load(:action_cable_channel) do
104
- # do something in the context of ActionCable::Channel::Base
105
- end
106
- ```
107
-
108
- *Vladimir Dementyev*
109
-
110
- * Add `Channel::Base#broadcast_to`.
111
-
112
- You can now call `broadcast_to` within a channel action, which equals to
113
- the `self.class.broadcast_to`.
8
+ * `ActionCable::Connection::Base` now allows intercepting unhandled exceptions
9
+ with `rescue_from` before they are logged, which is useful for error reporting
10
+ tools and other integrations.
114
11
 
115
- *Vladimir Dementyev*
12
+ *Justin Talbott*
116
13
 
117
- * Make `Channel::Base.broadcasting_for` a public API.
14
+ * Add `ActionCable::Channel#stream_or_reject_for` to stream if record is present, otherwise reject the connection
118
15
 
119
- You can use `.broadcasting_for` to generate a unique stream identifier within
120
- a channel for the specified target (e.g. Active Record model):
16
+ *Atul Bhosale*
121
17
 
122
- ```ruby
123
- ChatChannel.broadcasting_for(model) # => "chat:<model.to_gid_param>"
124
- ```
125
-
126
- *Vladimir Dementyev*
127
-
128
-
129
- ## Rails 6.0.0.beta1 (January 18, 2019) ##
130
-
131
- * [Rename npm package](https://github.com/rails/rails/pull/34905) from
132
- [`actioncable`](https://www.npmjs.com/package/actioncable) to
133
- [`@rails/actioncable`](https://www.npmjs.com/package/@rails/actioncable).
134
-
135
- *Javan Makhmali*
136
-
137
- * Merge [`action-cable-testing`](https://github.com/palkan/action-cable-testing) to Rails.
138
-
139
- *Vladimir Dementyev*
140
-
141
- * The JavaScript WebSocket client will no longer try to reconnect
142
- when you call `reject_unauthorized_connection` on the connection.
143
-
144
- *Mick Staugaard*
145
-
146
- * `ActionCable.Connection#getState` now references the configurable
147
- `ActionCable.adapters.WebSocket` property rather than the `WebSocket` global
148
- variable, matching the behavior of `ActionCable.Connection#open`.
18
+ * Add `ActionCable::Channel#stop_stream_from` and `#stop_stream_for` to unsubscribe from a specific stream.
149
19
 
150
- *Richard Macklin*
20
+ *Zhang Kang*
151
21
 
152
- * The ActionCable javascript package has been converted from CoffeeScript
153
- to ES2015, and we now publish the source code in the npm distribution.
22
+ * Add PostgreSQL subscription connection identificator.
154
23
 
155
- This allows ActionCable users to depend on the javascript source code
156
- rather than the compiled code, which can produce smaller javascript bundles.
24
+ Now you can distinguish Action Cable PostgreSQL subscription connections among others.
25
+ Also, you can set custom `id` in `cable.yml` configuration.
157
26
 
158
- This change includes some breaking changes to optional parts of the
159
- ActionCable javascript API:
160
-
161
- - Configuration of the WebSocket adapter and logger adapter have been moved
162
- from properties of `ActionCable` to properties of `ActionCable.adapters`.
163
- If you are currently configuring these adapters you will need to make
164
- these changes when upgrading:
165
-
166
- ```diff
167
- - ActionCable.WebSocket = MyWebSocket
168
- + ActionCable.adapters.WebSocket = MyWebSocket
169
- ```
170
- ```diff
171
- - ActionCable.logger = myLogger
172
- + ActionCable.adapters.logger = myLogger
173
- ```
174
-
175
- - The `ActionCable.startDebugging()` and `ActionCable.stopDebugging()`
176
- methods have been removed and replaced with the property
177
- `ActionCable.logger.enabled`. If you are currently using these methods you
178
- will need to make these changes when upgrading:
179
-
180
- ```diff
181
- - ActionCable.startDebugging()
182
- + ActionCable.logger.enabled = true
183
- ```
184
- ```diff
185
- - ActionCable.stopDebugging()
186
- + ActionCable.logger.enabled = false
187
- ```
188
-
189
- *Richard Macklin*
190
-
191
- * Add `id` option to redis adapter so now you can distinguish
192
- ActionCable's redis connections among others. Also, you can set
193
- custom id in options.
194
-
195
- Before:
196
- ```
197
- $ redis-cli client list
198
- id=669 addr=127.0.0.1:46442 fd=8 name= age=18 ...
199
- ```
200
-
201
- After:
202
- ```
203
- $ redis-cli client list
204
- id=673 addr=127.0.0.1:46516 fd=8 name=ActionCable-PID-19413 age=2 ...
27
+ ```sql
28
+ SELECT application_name FROM pg_stat_activity;
29
+ /*
30
+ application_name
31
+ ------------------------
32
+ psql
33
+ ActionCable-PID-42
34
+ (2 rows)
35
+ */
205
36
  ```
206
37
 
207
- *Ilia Kasianenko*
38
+ *Sergey Ponomarev*
208
39
 
209
- * Rails 6 requires Ruby 2.5.0 or newer.
40
+ * Subscription confirmations and rejections are now logged at the `DEBUG` level instead of `INFO`.
210
41
 
211
- *Jeremy Daer*, *Kasper Timm Hansen*
42
+ *DHH*
212
43
 
213
44
 
214
- Please check [5-2-stable](https://github.com/rails/rails/blob/5-2-stable/actioncable/CHANGELOG.md) for previous changes.
45
+ Please check [6-0-stable](https://github.com/rails/rails/blob/6-0-stable/actioncable/CHANGELOG.md) for previous changes.
@@ -1,4 +1,4 @@
1
- Copyright (c) 2015-2019 Basecamp, LLC
1
+ Copyright (c) 2015-2020 Basecamp, LLC
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
@@ -135,7 +135,7 @@
135
135
  if (document.visibilityState === "visible") {
136
136
  setTimeout(function() {
137
137
  if (_this2.connectionIsStale() || !_this2.connection.isOpen()) {
138
- logger.log("ConnectionMonitor reopening stale connection on visibilitychange. visbilityState = " + document.visibilityState);
138
+ logger.log("ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = " + document.visibilityState);
139
139
  _this2.connection.reopen();
140
140
  }
141
141
  }, 200);
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  #--
4
- # Copyright (c) 2015-2019 Basecamp, LLC
4
+ # Copyright (c) 2015-2020 Basecamp, LLC
5
5
  #
6
6
  # Permission is hereby granted, free of charge, to any person obtaining
7
7
  # a copy of this software and associated documentation files (the
@@ -194,7 +194,7 @@ module ActionCable
194
194
  end
195
195
 
196
196
  private
197
- # Called once a consumer has become a subscriber of the channel. Usually the place to setup any streams
197
+ # Called once a consumer has become a subscriber of the channel. Usually the place to set up any streams
198
198
  # you want this channel to be sending to the subscriber.
199
199
  def subscribed # :doc:
200
200
  # Override in subclasses
@@ -283,7 +283,7 @@ module ActionCable
283
283
 
284
284
  def transmit_subscription_confirmation
285
285
  unless subscription_confirmation_sent?
286
- logger.info "#{self.class.name} is transmitting the subscription confirmation"
286
+ logger.debug "#{self.class.name} is transmitting the subscription confirmation"
287
287
 
288
288
  ActiveSupport::Notifications.instrument("transmit_subscription_confirmation.action_cable", channel_class: self.class.name) do
289
289
  connection.transmit identifier: @identifier, type: ActionCable::INTERNAL[:message_types][:confirmation]
@@ -298,7 +298,7 @@ module ActionCable
298
298
  end
299
299
 
300
300
  def transmit_subscription_rejection
301
- logger.info "#{self.class.name} is transmitting the subscription rejection"
301
+ logger.debug "#{self.class.name} is transmitting the subscription rejection"
302
302
 
303
303
  ActiveSupport::Notifications.instrument("transmit_subscription_rejection.action_cable", channel_class: self.class.name) do
304
304
  connection.transmit identifier: @identifier, type: ActionCable::INTERNAL[:message_types][:rejection]
@@ -14,7 +14,7 @@ module ActionCable
14
14
  # Chats::AppearancesChannel.channel_name # => 'chats:appearances'
15
15
  # FooChats::BarAppearancesChannel.channel_name # => 'foo_chats:bar_appearances'
16
16
  def channel_name
17
- @channel_name ||= name.sub(/Channel$/, "").gsub("::", ":").underscore
17
+ @channel_name ||= name.delete_suffix("Channel").gsub("::", ":").underscore
18
18
  end
19
19
  end
20
20
 
@@ -82,7 +82,7 @@ module ActionCable
82
82
  # Build a stream handler by wrapping the user-provided callback with
83
83
  # a decoder or defaulting to a JSON-decoding retransmitter.
84
84
  handler = worker_pool_stream_handler(broadcasting, callback || block, coder: coder)
85
- streams << [ broadcasting, handler ]
85
+ streams[broadcasting] = handler
86
86
 
87
87
  connection.server.event_loop.post do
88
88
  pubsub.subscribe(broadcasting, handler, lambda do
@@ -102,6 +102,20 @@ module ActionCable
102
102
  stream_from(broadcasting_for(model), callback || block, coder: coder)
103
103
  end
104
104
 
105
+ # Unsubscribes streams from the named <tt>broadcasting</tt>.
106
+ def stop_stream_from(broadcasting)
107
+ callback = streams.delete(broadcasting)
108
+ if callback
109
+ pubsub.unsubscribe(broadcasting, callback)
110
+ logger.info "#{self.class.name} stopped streaming from #{broadcasting}"
111
+ end
112
+ end
113
+
114
+ # Unsubscribes streams for the <tt>model</tt>.
115
+ def stop_stream_for(model)
116
+ stop_stream_from(broadcasting_for(model))
117
+ end
118
+
105
119
  # Unsubscribes all streams associated with this channel from the pubsub queue.
106
120
  def stop_all_streams
107
121
  streams.each do |broadcasting, callback|
@@ -110,11 +124,23 @@ module ActionCable
110
124
  end.clear
111
125
  end
112
126
 
127
+ # Calls stream_for if record is present, otherwise calls reject.
128
+ # This method is intended to be called when you're looking
129
+ # for a record based on a parameter, if its found it will start
130
+ # streaming. If the record is nil then it will reject the connection.
131
+ def stream_or_reject_for(record)
132
+ if record
133
+ stream_for record
134
+ else
135
+ reject
136
+ end
137
+ end
138
+
113
139
  private
114
140
  delegate :pubsub, to: :connection
115
141
 
116
142
  def streams
117
- @_streams ||= []
143
+ @_streams ||= {}
118
144
  end
119
145
 
120
146
  # Always wrap the outermost handler to invoke the user handler on the
@@ -159,7 +159,7 @@ module ActionCable
159
159
  # def test_speak
160
160
  # subscribe room_id: rooms(:chat).id
161
161
  #
162
- # assert_broadcasts_on(rooms(:chat), text: "Hello, Rails!") do
162
+ # assert_broadcast_on(rooms(:chat), text: "Hello, Rails!") do
163
163
  # perform :speak, message: "Hello, Rails!"
164
164
  # end
165
165
  # end
@@ -209,7 +209,7 @@ module ActionCable
209
209
  end
210
210
  end
211
211
 
212
- # Setup test connection with the specified identifiers:
212
+ # Set up test connection with the specified identifiers:
213
213
  #
214
214
  # class ApplicationCable < ActionCable::Connection::Base
215
215
  # identified_by :user, :token
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "action_dispatch"
4
+ require "active_support/rescuable"
4
5
 
5
6
  module ActionCable
6
7
  module Connection
@@ -46,6 +47,7 @@ module ActionCable
46
47
  include Identification
47
48
  include InternalChannel
48
49
  include Authorization
50
+ include ActiveSupport::Rescuable
49
51
 
50
52
  attr_reader :server, :env, :subscriptions, :logger, :worker_pool, :protocol
51
53
  delegate :event_loop, :pubsub, to: :server
@@ -21,6 +21,7 @@ module ActionCable
21
21
  logger.error "Received unrecognized command in #{data.inspect}"
22
22
  end
23
23
  rescue Exception => e
24
+ @connection.rescue_with_handler(e)
24
25
  logger.error "Could not execute command from (#{data.inspect}) [#{e.class} - #{e.message}]: #{e.backtrace.first(5).join(" | ")}"
25
26
  end
26
27
 
@@ -85,7 +85,7 @@ module ActionCable
85
85
  # end
86
86
  # end
87
87
  #
88
- # +connect+ accepts additional information the HTTP request with the
88
+ # +connect+ accepts additional information about the HTTP request with the
89
89
  # +params+, +headers+, +session+ and Rack +env+ options.
90
90
  #
91
91
  # def test_connect_with_headers_and_query_string
@@ -101,7 +101,7 @@ module ActionCable
101
101
  # assert_equal "1", connection.user.id
102
102
  # end
103
103
  #
104
- # You can also setup the correct cookies before the connection request:
104
+ # You can also set up the correct cookies before the connection request:
105
105
  #
106
106
  # def test_connect_with_cookies
107
107
  # # Plain cookies:
@@ -30,7 +30,7 @@ module ActionCable
30
30
 
31
31
  ActiveSupport.on_load(:action_cable) do
32
32
  if (config_path = Pathname.new(app.config.paths["config/cable"].first)).exist?
33
- self.cable = Rails.application.config_for(config_path).with_indifferent_access
33
+ self.cable = Rails.application.config_for(config_path).to_h.with_indifferent_access
34
34
  end
35
35
 
36
36
  previous_connection_class = connection_class
@@ -8,9 +8,9 @@ module ActionCable
8
8
 
9
9
  module VERSION
10
10
  MAJOR = 6
11
- MINOR = 0
12
- TINY = 3
13
- PRE = "4"
11
+ MINOR = 1
12
+ TINY = 1
13
+ PRE = nil
14
14
 
15
15
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
16
16
  end
@@ -12,11 +12,11 @@ module ActionCable
12
12
  # </head>
13
13
  #
14
14
  # This is then used by Action Cable to determine the URL of your WebSocket server.
15
- # Your CoffeeScript can then connect to the server without needing to specify the
15
+ # Your JavaScript can then connect to the server without needing to specify the
16
16
  # URL directly:
17
17
  #
18
- # #= require cable
19
- # @App = {}
18
+ # window.Cable = require("@rails/actioncable")
19
+ # window.App = {}
20
20
  # App.cable = Cable.createConsumer()
21
21
  #
22
22
  # Make sure to specify the correct server location in each of your environment
@@ -11,7 +11,6 @@ module ActionCable
11
11
  autoload :Configuration
12
12
 
13
13
  autoload :Worker
14
- autoload :ActiveRecordConnectionManagement, "action_cable/server/worker/active_record_connection_management"
15
14
  end
16
15
  end
17
16
  end
@@ -27,7 +27,7 @@ module ActionCable
27
27
  @remote_connections = @event_loop = @worker_pool = @pubsub = nil
28
28
  end
29
29
 
30
- # Called by Rack to setup the server.
30
+ # Called by Rack to set up the server.
31
31
  def call(env)
32
32
  setup_heartbeat_timer
33
33
  config.connection_class.call.new(self, env).process
@@ -40,7 +40,7 @@ module ActionCable
40
40
  end
41
41
 
42
42
  def broadcast(message)
43
- server.logger.debug "[ActionCable] Broadcasting to #{broadcasting}: #{message.inspect}"
43
+ server.logger.debug { "[ActionCable] Broadcasting to #{broadcasting}: #{message.inspect}" }
44
44
 
45
45
  payload = { broadcasting: broadcasting, message: message, coder: coder }
46
46
  ActiveSupport::Notifications.instrument("broadcast.action_cable", payload) do
@@ -2,6 +2,7 @@
2
2
 
3
3
  require "active_support/callbacks"
4
4
  require "active_support/core_ext/module/attribute_accessors_per_thread"
5
+ require "action_cable/server/worker/active_record_connection_management"
5
6
  require "concurrent"
6
7
 
7
8
  module ActionCable
@@ -25,6 +25,10 @@ module ActionCable
25
25
  def shutdown
26
26
  raise NotImplementedError
27
27
  end
28
+
29
+ def identifier
30
+ @server.config.cable[:id] ||= "ActionCable-PID-#{$$}"
31
+ end
28
32
  end
29
33
  end
30
34
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- gem "pg", ">= 0.18", "< 2.0"
3
+ gem "pg", "~> 1.1"
4
4
  require "pg"
5
5
  require "thread"
6
6
  require "digest/sha1"
@@ -42,6 +42,7 @@ module ActionCable
42
42
  pg_conn = ar_conn.raw_connection
43
43
 
44
44
  verify!(pg_conn)
45
+ pg_conn.exec("SET application_name = #{pg_conn.escape_identifier(identifier)}")
45
46
  yield pg_conn
46
47
  ensure
47
48
  ar_conn.disconnect!
@@ -15,7 +15,6 @@ module ActionCable
15
15
  # Overwrite this factory method for Redis connections if you want to use a different Redis library than the redis gem.
16
16
  # This is needed, for example, when using Makara proxies for distributed Redis.
17
17
  cattr_accessor :redis_connector, default: ->(config) do
18
- config[:id] ||= "ActionCable-PID-#{$$}"
19
18
  ::Redis.new(config.except(:adapter, :channel_prefix))
20
19
  end
21
20
 
@@ -57,7 +56,7 @@ module ActionCable
57
56
  end
58
57
 
59
58
  def redis_connection
60
- self.class.redis_connector.call(@server.config.cable)
59
+ self.class.redis_connector.call(@server.config.cable.merge(id: identifier))
61
60
  end
62
61
 
63
62
  class Listener < SubscriberMap
@@ -42,10 +42,10 @@ module ActionCable
42
42
  # end
43
43
  # end
44
44
  #
45
- def assert_broadcasts(stream, number)
45
+ def assert_broadcasts(stream, number, &block)
46
46
  if block_given?
47
47
  original_count = broadcasts_size(stream)
48
- yield
48
+ assert_nothing_raised(&block)
49
49
  new_count = broadcasts_size(stream)
50
50
  actual_count = new_count - original_count
51
51
  else
@@ -94,7 +94,7 @@ module ActionCable
94
94
  # end
95
95
  # end
96
96
  #
97
- def assert_broadcast_on(stream, data)
97
+ def assert_broadcast_on(stream, data, &block)
98
98
  # Encode to JSON and back–we want to use this value to compare
99
99
  # with decoded JSON.
100
100
  # Comparing JSON strings doesn't work due to the order if the keys.
@@ -106,7 +106,7 @@ module ActionCable
106
106
  old_messages = new_messages
107
107
  clear_messages(stream)
108
108
 
109
- yield
109
+ assert_nothing_raised(&block)
110
110
  new_messages = broadcasts(stream)
111
111
  clear_messages(stream)
112
112
 
@@ -1,11 +1,11 @@
1
1
  Description:
2
2
  ============
3
- Stubs out a new cable channel for the server (in Ruby) and client (in JavaScript).
3
+ Generates a new cable channel for the server (in Ruby) and client (in JavaScript).
4
4
  Pass the channel name, either CamelCased or under_scored, and an optional list of channel actions as arguments.
5
5
 
6
6
  Example:
7
7
  ========
8
- rails generate channel Chat speak
8
+ bin/rails generate channel Chat speak
9
9
 
10
10
  creates a Chat channel class, test and JavaScript asset:
11
11
  Channel: app/channels/chat_channel.rb
@@ -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 `bin/rails generate channel` command.
3
3
 
4
4
  import { createConsumer } from "@rails/actioncable"
5
5
 
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: 6.0.3.4
4
+ version: 6.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pratik Naik
@@ -9,22 +9,36 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-10-07 00:00:00.000000000 Z
12
+ date: 2021-01-07 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activesupport
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - '='
19
+ - !ruby/object:Gem::Version
20
+ version: 6.1.1
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - '='
26
+ - !ruby/object:Gem::Version
27
+ version: 6.1.1
14
28
  - !ruby/object:Gem::Dependency
15
29
  name: actionpack
16
30
  requirement: !ruby/object:Gem::Requirement
17
31
  requirements:
18
32
  - - '='
19
33
  - !ruby/object:Gem::Version
20
- version: 6.0.3.4
34
+ version: 6.1.1
21
35
  type: :runtime
22
36
  prerelease: false
23
37
  version_requirements: !ruby/object:Gem::Requirement
24
38
  requirements:
25
39
  - - '='
26
40
  - !ruby/object:Gem::Version
27
- version: 6.0.3.4
41
+ version: 6.1.1
28
42
  - !ruby/object:Gem::Dependency
29
43
  name: nio4r
30
44
  requirement: !ruby/object:Gem::Requirement
@@ -126,10 +140,10 @@ licenses:
126
140
  - MIT
127
141
  metadata:
128
142
  bug_tracker_uri: https://github.com/rails/rails/issues
129
- changelog_uri: https://github.com/rails/rails/blob/v6.0.3.4/actioncable/CHANGELOG.md
130
- documentation_uri: https://api.rubyonrails.org/v6.0.3.4/
143
+ changelog_uri: https://github.com/rails/rails/blob/v6.1.1/actioncable/CHANGELOG.md
144
+ documentation_uri: https://api.rubyonrails.org/v6.1.1/
131
145
  mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
132
- source_code_uri: https://github.com/rails/rails/tree/v6.0.3.4/actioncable
146
+ source_code_uri: https://github.com/rails/rails/tree/v6.1.1/actioncable
133
147
  post_install_message:
134
148
  rdoc_options: []
135
149
  require_paths:
@@ -145,7 +159,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
159
  - !ruby/object:Gem::Version
146
160
  version: '0'
147
161
  requirements: []
148
- rubygems_version: 3.1.4
162
+ rubygems_version: 3.2.3
149
163
  signing_key:
150
164
  specification_version: 4
151
165
  summary: WebSocket framework for Rails.