ably 1.2.6 → 1.2.7

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: e5e951e6d3d76d3abcf7d95bf3ffb24b0ef5a351f6862d8fe6e777971185a2ac
4
- data.tar.gz: a548e729e3f25562630cb28ba0f57e6aba2d58525235553831b83411c08c2f12
3
+ metadata.gz: f26db73bc52944f7e282d9946c31d3c3cca0c12e922a6fdf12fbf017c825c850
4
+ data.tar.gz: dddf1e3c6fc8bfec7290d75f7da54bdf4c1d126f3a9c2b55a07addfad55f8de7
5
5
  SHA512:
6
- metadata.gz: 78d23f620fe230ef257fa7ab9042c88479494e91f4d0ad10a07f154d79432e0b3487cc0719f5262867649bce3d874a1a2ab8a8193b7448f9700d08b28770c0a0
7
- data.tar.gz: aaa979842c38dbfd4b65b177bee657c6278de4fa8091799259c1adad61ebf410516dc20458b2b561d4b0c7b6b20d3ba4b9b31b93c2a9c32548a000243099bd68
6
+ metadata.gz: e9db81f7b4f556708cd4e8e23538266c211b28b726081dba5a4e7022f108f0235bb37b10ab393208266c3aa44eceb1fc599c3cfaef62e85052d5a3371e7ff91b
7
+ data.tar.gz: c17bf2a1c5db04329d04684ffe39cbdc339e29f5e88fc3059d2b0f70549d07cdd5262d891c146f28fce47969fad9612c6dc70f3203a48ef57f847fbf7cb6e145
@@ -1,4 +1,5 @@
1
1
  on:
2
+ workflow_dispatch:
2
3
  pull_request:
3
4
  push:
4
5
  branches:
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Change Log
2
2
 
3
+ ## [v1.2.7](https://github.com/ably/ably-ruby/tree/v1.2.7)
4
+
5
+ [Full Changelog](https://github.com/ably/ably-ruby/compare/v1.2.6...v1.2.7)
6
+
7
+ **Fixed bugs:**
8
+
9
+ - Fix crash when logging an incoming message with debug-level logging enabled [\#436](https://github.com/ably/ably-ruby/issues/436)
10
+
3
11
  ## [v1.2.6](https://github.com/ably/ably-ruby/tree/v1.2.6)
4
12
 
5
13
  [Full Changelog](https://github.com/ably/ably-ruby/compare/v1.2.5...v1.2.6)
data/SPEC.md CHANGED
@@ -1,4 +1,4 @@
1
- # Ably Realtime & REST Client Library 1.2.6 Specification
1
+ # Ably Realtime & REST Client Library 1.2.7 Specification
2
2
 
3
3
  ### Ably::Realtime::Auth
4
4
  _(see [spec/acceptance/realtime/auth_spec.rb](./spec/acceptance/realtime/auth_spec.rb))_
@@ -55,7 +55,7 @@ _(see [spec/acceptance/realtime/auth_spec.rb](./spec/acceptance/realtime/auth_sp
55
55
  * and an incompatible client_id in a TokenDetails object passed to the auth callback
56
56
  * [rejects a TokenDetails object with an incompatible client_id and fails with an exception](./spec/acceptance/realtime/auth_spec.rb#L287)
57
57
  * when already authenticated with a valid token
58
- * [ensures message delivery continuity whilst upgrading (#RTC8a1)](./spec/acceptance/realtime/auth_spec.rb#L703)
58
+ * [ensures message delivery continuity whilst upgrading (#RTC8a1)](./spec/acceptance/realtime/auth_spec.rb#L700)
59
59
  * when INITIALIZED
60
60
  * [obtains a token and connects to Ably (#RTC8c, #RTC8b1)](./spec/acceptance/realtime/auth_spec.rb#L328)
61
61
  * when CONNECTING
@@ -78,97 +78,97 @@ _(see [spec/acceptance/realtime/auth_spec.rb](./spec/acceptance/realtime/auth_sp
78
78
  * when auth fails
79
79
  * [transitions the connection state to the FAILED state (#RSA15c, #RTC8a2, #RTC8a3)](./spec/acceptance/realtime/auth_spec.rb#L612)
80
80
  * when the authCallback fails
81
- * [calls the error callback of authorize and leaves the connection intact (#RSA4c3)](./spec/acceptance/realtime/auth_spec.rb#L640)
81
+ * [calls the error callback of authorize and leaves the connection intact (#RSA4c3)](./spec/acceptance/realtime/auth_spec.rb#L638)
82
82
  * when upgrading capabilities
83
- * [is allowed (#RTC8a1)](./spec/acceptance/realtime/auth_spec.rb#L659)
83
+ * [is allowed (#RTC8a1)](./spec/acceptance/realtime/auth_spec.rb#L657)
84
84
  * when downgrading capabilities (#RTC8a1)
85
- * [is allowed and channels are detached](./spec/acceptance/realtime/auth_spec.rb#L686)
85
+ * [is allowed and channels are detached](./spec/acceptance/realtime/auth_spec.rb#L683)
86
86
  * #authorize_async
87
- * [returns a token synchronously](./spec/acceptance/realtime/auth_spec.rb#L737)
87
+ * [returns a token synchronously](./spec/acceptance/realtime/auth_spec.rb#L734)
88
88
  * server initiated AUTH ProtocolMessage
89
89
  * when received
90
- * [should immediately start a new authentication process (#RTN22)](./spec/acceptance/realtime/auth_spec.rb#L758)
90
+ * [should immediately start a new authentication process (#RTN22)](./spec/acceptance/realtime/auth_spec.rb#L755)
91
91
  * when not received
92
- * [should expect the connection to be disconnected by the server but should resume automatically (#RTN22a)](./spec/acceptance/realtime/auth_spec.rb#L781)
92
+ * [should expect the connection to be disconnected by the server but should resume automatically (#RTN22a)](./spec/acceptance/realtime/auth_spec.rb#L778)
93
93
  * #auth_params
94
- * [returns the auth params asynchronously](./spec/acceptance/realtime/auth_spec.rb#L807)
94
+ * [returns the auth params asynchronously](./spec/acceptance/realtime/auth_spec.rb#L804)
95
95
  * #auth_params_sync
96
- * [returns the auth params synchronously](./spec/acceptance/realtime/auth_spec.rb#L816)
96
+ * [returns the auth params synchronously](./spec/acceptance/realtime/auth_spec.rb#L813)
97
97
  * #auth_header
98
- * [returns an auth header asynchronously](./spec/acceptance/realtime/auth_spec.rb#L823)
98
+ * [returns an auth header asynchronously](./spec/acceptance/realtime/auth_spec.rb#L820)
99
99
  * #auth_header_sync
100
- * [returns an auth header synchronously](./spec/acceptance/realtime/auth_spec.rb#L832)
100
+ * [returns an auth header synchronously](./spec/acceptance/realtime/auth_spec.rb#L829)
101
101
  * #client_id_validated?
102
102
  * when using basic auth
103
103
  * before connected
104
- * [is false as basic auth users do not have an identity](./spec/acceptance/realtime/auth_spec.rb#L845)
104
+ * [is false as basic auth users do not have an identity](./spec/acceptance/realtime/auth_spec.rb#L842)
105
105
  * once connected
106
- * [is true](./spec/acceptance/realtime/auth_spec.rb#L852)
107
- * [contains a validated wildcard client_id](./spec/acceptance/realtime/auth_spec.rb#L859)
106
+ * [is true](./spec/acceptance/realtime/auth_spec.rb#L849)
107
+ * [contains a validated wildcard client_id](./spec/acceptance/realtime/auth_spec.rb#L856)
108
108
  * when using a token string
109
109
  * with a valid client_id
110
110
  * before connected
111
- * [is false as identification is not possible from an opaque token string](./spec/acceptance/realtime/auth_spec.rb#L873)
112
- * [#client_id is nil](./spec/acceptance/realtime/auth_spec.rb#L878)
111
+ * [is false as identification is not possible from an opaque token string](./spec/acceptance/realtime/auth_spec.rb#L870)
112
+ * [#client_id is nil](./spec/acceptance/realtime/auth_spec.rb#L875)
113
113
  * once connected
114
- * [is true](./spec/acceptance/realtime/auth_spec.rb#L885)
115
- * [#client_id is populated](./spec/acceptance/realtime/auth_spec.rb#L892)
114
+ * [is true](./spec/acceptance/realtime/auth_spec.rb#L882)
115
+ * [#client_id is populated](./spec/acceptance/realtime/auth_spec.rb#L889)
116
116
  * with no client_id (anonymous)
117
117
  * before connected
118
- * [is false as identification is not possible from an opaque token string](./spec/acceptance/realtime/auth_spec.rb#L905)
118
+ * [is false as identification is not possible from an opaque token string](./spec/acceptance/realtime/auth_spec.rb#L902)
119
119
  * once connected
120
- * [is true](./spec/acceptance/realtime/auth_spec.rb#L912)
120
+ * [is true](./spec/acceptance/realtime/auth_spec.rb#L909)
121
121
  * with a wildcard client_id (anonymous)
122
122
  * before connected
123
- * [is false as identification is not possible from an opaque token string](./spec/acceptance/realtime/auth_spec.rb#L925)
123
+ * [is false as identification is not possible from an opaque token string](./spec/acceptance/realtime/auth_spec.rb#L922)
124
124
  * once connected
125
- * [is true](./spec/acceptance/realtime/auth_spec.rb#L932)
125
+ * [is true](./spec/acceptance/realtime/auth_spec.rb#L929)
126
126
  * when using a token
127
127
  * with a client_id
128
- * [is true](./spec/acceptance/realtime/auth_spec.rb#L946)
128
+ * [is true](./spec/acceptance/realtime/auth_spec.rb#L943)
129
129
  * once connected
130
- * [is true](./spec/acceptance/realtime/auth_spec.rb#L952)
130
+ * [is true](./spec/acceptance/realtime/auth_spec.rb#L949)
131
131
  * with no client_id (anonymous)
132
- * [is true](./spec/acceptance/realtime/auth_spec.rb#L964)
132
+ * [is true](./spec/acceptance/realtime/auth_spec.rb#L961)
133
133
  * once connected
134
- * [is true](./spec/acceptance/realtime/auth_spec.rb#L970)
134
+ * [is true](./spec/acceptance/realtime/auth_spec.rb#L967)
135
135
  * with a wildcard client_id (anonymous)
136
- * [is true](./spec/acceptance/realtime/auth_spec.rb#L982)
136
+ * [is true](./spec/acceptance/realtime/auth_spec.rb#L979)
137
137
  * once connected
138
- * [is true](./spec/acceptance/realtime/auth_spec.rb#L988)
138
+ * [is true](./spec/acceptance/realtime/auth_spec.rb#L985)
139
139
  * when using a token request with a client_id
140
- * [is not true as identification is not confirmed until authenticated](./spec/acceptance/realtime/auth_spec.rb#L1001)
140
+ * [is not true as identification is not confirmed until authenticated](./spec/acceptance/realtime/auth_spec.rb#L998)
141
141
  * once connected
142
- * [is true as identification is completed following CONNECTED ProtocolMessage](./spec/acceptance/realtime/auth_spec.rb#L1007)
142
+ * [is true as identification is completed following CONNECTED ProtocolMessage](./spec/acceptance/realtime/auth_spec.rb#L1004)
143
143
  * deprecated #authorise
144
- * [logs a deprecation warning (#RSA10l)](./spec/acceptance/realtime/auth_spec.rb#L1021)
145
- * [returns a valid token (#RSA10l)](./spec/acceptance/realtime/auth_spec.rb#L1027)
144
+ * [logs a deprecation warning (#RSA10l)](./spec/acceptance/realtime/auth_spec.rb#L1018)
145
+ * [returns a valid token (#RSA10l)](./spec/acceptance/realtime/auth_spec.rb#L1024)
146
146
  * when using JWT
147
147
  * when using auth_url
148
148
  * when credentials are valid
149
- * [client successfully fetches a channel and publishes a message](./spec/acceptance/realtime/auth_spec.rb#L1046)
149
+ * [client successfully fetches a channel and publishes a message](./spec/acceptance/realtime/auth_spec.rb#L1043)
150
150
  * when credentials are wrong
151
- * [disconnected includes and invalid signature message](./spec/acceptance/realtime/auth_spec.rb#L1059)
151
+ * [disconnected includes and invalid signature message](./spec/acceptance/realtime/auth_spec.rb#L1056)
152
152
  * when token is expired
153
- * [receives a 40142 error from the server](./spec/acceptance/realtime/auth_spec.rb#L1072)
153
+ * [receives a 40142 error from the server](./spec/acceptance/realtime/auth_spec.rb#L1068)
154
154
  * when using auth_callback
155
155
  * when credentials are valid
156
- * [authentication succeeds and client can post a message](./spec/acceptance/realtime/auth_spec.rb#L1097)
156
+ * [authentication succeeds and client can post a message](./spec/acceptance/realtime/auth_spec.rb#L1093)
157
157
  * when credentials are invalid
158
- * [authentication fails and reason for disconnection is invalid signature](./spec/acceptance/realtime/auth_spec.rb#L1112)
158
+ * [authentication fails and reason for disconnection is invalid signature](./spec/acceptance/realtime/auth_spec.rb#L1108)
159
159
  * when the client is initialized with ClientOptions and the token is a JWT token
160
160
  * when credentials are valid
161
- * [posts successfully to a channel](./spec/acceptance/realtime/auth_spec.rb#L1129)
161
+ * [posts successfully to a channel](./spec/acceptance/realtime/auth_spec.rb#L1124)
162
162
  * when credentials are invalid
163
- * [fails with an invalid signature error](./spec/acceptance/realtime/auth_spec.rb#L1144)
163
+ * [fails with an invalid signature error](./spec/acceptance/realtime/auth_spec.rb#L1139)
164
164
  * when JWT token expires
165
- * [client disconnects, a new token is requested via auth_callback and the client gets reconnected](./spec/acceptance/realtime/auth_spec.rb#L1171)
165
+ * [client disconnects, a new token is requested via auth_callback and the client gets reconnected](./spec/acceptance/realtime/auth_spec.rb#L1165)
166
166
  * and an AUTH procol message is received
167
- * [client reauths correctly without going through a disconnection](./spec/acceptance/realtime/auth_spec.rb#L1199)
167
+ * [client reauths correctly without going through a disconnection](./spec/acceptance/realtime/auth_spec.rb#L1193)
168
168
  * when the JWT token request includes a client_id
169
- * [the client_id is the same that was specified in the auth_callback that generated the JWT token](./spec/acceptance/realtime/auth_spec.rb#L1227)
169
+ * [the client_id is the same that was specified in the auth_callback that generated the JWT token](./spec/acceptance/realtime/auth_spec.rb#L1221)
170
170
  * when the JWT token request includes a subscribe-only capability
171
- * [client fails to publish to a channel with subscribe-only capability and publishes successfully on a channel with permissions](./spec/acceptance/realtime/auth_spec.rb#L1245)
171
+ * [client fails to publish to a channel with subscribe-only capability and publishes successfully on a channel with permissions](./spec/acceptance/realtime/auth_spec.rb#L1239)
172
172
 
173
173
  ### Ably::Realtime::Channel#history
174
174
  _(see [spec/acceptance/realtime/channel_history_spec.rb](./spec/acceptance/realtime/channel_history_spec.rb))_
@@ -286,255 +286,255 @@ _(see [spec/acceptance/realtime/channel_spec.rb](./spec/acceptance/realtime/chan
286
286
  * [does the detach operation once the connection state is connected (#RTL5h)](./spec/acceptance/realtime/channel_spec.rb#L830)
287
287
  * automatic channel recovery
288
288
  * when an ATTACH request times out
289
- * [moves to the SUSPENDED state (#RTL4f)](./spec/acceptance/realtime/channel_spec.rb#L859)
289
+ * [moves to the SUSPENDED state (#RTL4f)](./spec/acceptance/realtime/channel_spec.rb#L857)
290
290
  * if a subsequent ATTACHED is received on an ATTACHED channel
291
- * [ignores the additional ATTACHED if resumed is true (#RTL12)](./spec/acceptance/realtime/channel_spec.rb#L873)
292
- * [emits an UPDATE only when resumed is true (#RTL12)](./spec/acceptance/realtime/channel_spec.rb#L887)
293
- * [emits an UPDATE when resumed is true and includes the reason error from the ProtocolMessage (#RTL12)](./spec/acceptance/realtime/channel_spec.rb#L903)
291
+ * [ignores the additional ATTACHED if resumed is true (#RTL12)](./spec/acceptance/realtime/channel_spec.rb#L871)
292
+ * [emits an UPDATE only when resumed is true (#RTL12)](./spec/acceptance/realtime/channel_spec.rb#L885)
293
+ * [emits an UPDATE when resumed is true and includes the reason error from the ProtocolMessage (#RTL12)](./spec/acceptance/realtime/channel_spec.rb#L901)
294
294
  * #publish
295
295
  * when channel is attached (#RTL6c1)
296
- * [publishes messages](./spec/acceptance/realtime/channel_spec.rb#L928)
296
+ * [publishes messages](./spec/acceptance/realtime/channel_spec.rb#L926)
297
297
  * #(RTL17)
298
298
  * when channel is initialized
299
- * [sends messages only on attach](./spec/acceptance/realtime/channel_spec.rb#L941)
299
+ * [sends messages only on attach](./spec/acceptance/realtime/channel_spec.rb#L939)
300
300
  * when channel is attaching
301
- * [sends messages only on attach](./spec/acceptance/realtime/channel_spec.rb#L956)
301
+ * [sends messages only on attach](./spec/acceptance/realtime/channel_spec.rb#L954)
302
302
  * when channel is detaching
303
- * [stops sending message](./spec/acceptance/realtime/channel_spec.rb#L979)
303
+ * [stops sending message](./spec/acceptance/realtime/channel_spec.rb#L977)
304
304
  * when channel is detached
305
- * [stops sending message](./spec/acceptance/realtime/channel_spec.rb#L1007)
305
+ * [stops sending message](./spec/acceptance/realtime/channel_spec.rb#L1005)
306
306
  * when channel is failed
307
- * [errors when trying to send a message](./spec/acceptance/realtime/channel_spec.rb#L1033)
307
+ * [errors when trying to send a message](./spec/acceptance/realtime/channel_spec.rb#L1031)
308
308
  * when channel is not attached in state Initializing (#RTL6c1)
309
- * [publishes messages immediately and does not implicitly attach (#RTL6c1)](./spec/acceptance/realtime/channel_spec.rb#L1051)
309
+ * [publishes messages immediately and does not implicitly attach (#RTL6c1)](./spec/acceptance/realtime/channel_spec.rb#L1049)
310
310
  * when channel is Attaching (#RTL6c1)
311
- * [publishes messages immediately (#RTL6c1)](./spec/acceptance/realtime/channel_spec.rb#L1068)
311
+ * [publishes messages immediately (#RTL6c1)](./spec/acceptance/realtime/channel_spec.rb#L1066)
312
312
  * when channel is Detaching (#RTL6c1)
313
- * [publishes messages immediately (#RTL6c1)](./spec/acceptance/realtime/channel_spec.rb#L1093)
313
+ * [publishes messages immediately (#RTL6c1)](./spec/acceptance/realtime/channel_spec.rb#L1091)
314
314
  * when channel is Detached (#RTL6c1)
315
- * [publishes messages immediately (#RTL6c1)](./spec/acceptance/realtime/channel_spec.rb#L1123)
315
+ * [publishes messages immediately (#RTL6c1)](./spec/acceptance/realtime/channel_spec.rb#L1121)
316
316
  * with :queue_messages client option set to false (#RTL6c4)
317
317
  * and connection state connected (#RTL6c4)
318
- * [publishes the message](./spec/acceptance/realtime/channel_spec.rb#L1156)
318
+ * [publishes the message](./spec/acceptance/realtime/channel_spec.rb#L1154)
319
319
  * and connection state initialized (#RTL6c4)
320
- * [fails the deferrable](./spec/acceptance/realtime/channel_spec.rb#L1165)
320
+ * [fails the deferrable](./spec/acceptance/realtime/channel_spec.rb#L1163)
321
321
  * and connection state connecting (#RTL6c4)
322
- * [fails the deferrable](./spec/acceptance/realtime/channel_spec.rb#L1175)
322
+ * [fails the deferrable](./spec/acceptance/realtime/channel_spec.rb#L1173)
323
323
  * and connection state disconnected (#RTL6c4)
324
- * [fails the deferrable](./spec/acceptance/realtime/channel_spec.rb#L1190)
324
+ * [fails the deferrable](./spec/acceptance/realtime/channel_spec.rb#L1188)
325
325
  * and connection state suspended (#RTL6c4)
326
- * [fails the deferrable](./spec/acceptance/realtime/channel_spec.rb#L1190)
326
+ * [fails the deferrable](./spec/acceptance/realtime/channel_spec.rb#L1188)
327
327
  * and connection state closing (#RTL6c4)
328
- * [fails the deferrable](./spec/acceptance/realtime/channel_spec.rb#L1190)
328
+ * [fails the deferrable](./spec/acceptance/realtime/channel_spec.rb#L1188)
329
329
  * and connection state closed (#RTL6c4)
330
- * [fails the deferrable](./spec/acceptance/realtime/channel_spec.rb#L1190)
330
+ * [fails the deferrable](./spec/acceptance/realtime/channel_spec.rb#L1188)
331
331
  * and the channel state is failed (#RTL6c4)
332
- * [fails the deferrable](./spec/acceptance/realtime/channel_spec.rb#L1211)
332
+ * [fails the deferrable](./spec/acceptance/realtime/channel_spec.rb#L1209)
333
333
  * with name and data arguments
334
- * [publishes the message and return true indicating success](./spec/acceptance/realtime/channel_spec.rb#L1229)
334
+ * [publishes the message and return true indicating success](./spec/acceptance/realtime/channel_spec.rb#L1227)
335
335
  * and additional attributes
336
- * [publishes the message with the attributes and return true indicating success](./spec/acceptance/realtime/channel_spec.rb#L1242)
336
+ * [publishes the message with the attributes and return true indicating success](./spec/acceptance/realtime/channel_spec.rb#L1240)
337
337
  * and additional invalid attributes
338
- * [throws an exception](./spec/acceptance/realtime/channel_spec.rb#L1255)
338
+ * [throws an exception](./spec/acceptance/realtime/channel_spec.rb#L1253)
339
339
  * with an array of Hash objects with :name and :data attributes
340
- * [publishes an array of messages in one ProtocolMessage](./spec/acceptance/realtime/channel_spec.rb#L1269)
340
+ * [publishes an array of messages in one ProtocolMessage](./spec/acceptance/realtime/channel_spec.rb#L1267)
341
341
  * with an array of Message objects
342
- * [publishes an array of messages in one ProtocolMessage](./spec/acceptance/realtime/channel_spec.rb#L1297)
342
+ * [publishes an array of messages in one ProtocolMessage](./spec/acceptance/realtime/channel_spec.rb#L1295)
343
343
  * nil attributes
344
344
  * when name is nil
345
- * [publishes the message without a name attribute in the payload](./spec/acceptance/realtime/channel_spec.rb#L1321)
345
+ * [publishes the message without a name attribute in the payload](./spec/acceptance/realtime/channel_spec.rb#L1319)
346
346
  * when data is nil
347
- * [publishes the message without a data attribute in the payload](./spec/acceptance/realtime/channel_spec.rb#L1345)
347
+ * [publishes the message without a data attribute in the payload](./spec/acceptance/realtime/channel_spec.rb#L1343)
348
348
  * with neither name or data attributes
349
- * [publishes the message without any attributes in the payload](./spec/acceptance/realtime/channel_spec.rb#L1369)
349
+ * [publishes the message without any attributes in the payload](./spec/acceptance/realtime/channel_spec.rb#L1367)
350
350
  * with two invalid message out of 12
351
351
  * before client_id is known (validated)
352
- * [calls the errback once](./spec/acceptance/realtime/channel_spec.rb#L1393)
352
+ * [calls the errback once](./spec/acceptance/realtime/channel_spec.rb#L1391)
353
353
  * when client_id is known (validated)
354
- * [raises an exception](./spec/acceptance/realtime/channel_spec.rb#L1413)
354
+ * [raises an exception](./spec/acceptance/realtime/channel_spec.rb#L1411)
355
355
  * only invalid messages
356
356
  * before client_id is known (validated)
357
- * [calls the errback once](./spec/acceptance/realtime/channel_spec.rb#L1432)
357
+ * [calls the errback once](./spec/acceptance/realtime/channel_spec.rb#L1430)
358
358
  * when client_id is known (validated)
359
- * [raises an exception](./spec/acceptance/realtime/channel_spec.rb#L1451)
359
+ * [raises an exception](./spec/acceptance/realtime/channel_spec.rb#L1449)
360
360
  * with many many messages and many connections simultaneously
361
- * [publishes all messages, all success callbacks are called, and a history request confirms all messages were published](./spec/acceptance/realtime/channel_spec.rb#L1465)
361
+ * [publishes all messages, all success callbacks are called, and a history request confirms all messages were published](./spec/acceptance/realtime/channel_spec.rb#L1463)
362
362
  * with more than allowed messages in a single publish
363
- * [rejects the publish](./spec/acceptance/realtime/channel_spec.rb#L1488)
363
+ * [rejects the publish](./spec/acceptance/realtime/channel_spec.rb#L1486)
364
364
  * identified clients
365
365
  * when authenticated with a wildcard client_id
366
366
  * with a valid client_id in the message
367
- * [succeeds](./spec/acceptance/realtime/channel_spec.rb#L1508)
367
+ * [succeeds](./spec/acceptance/realtime/channel_spec.rb#L1506)
368
368
  * with a wildcard client_id in the message
369
- * [throws an exception](./spec/acceptance/realtime/channel_spec.rb#L1522)
369
+ * [throws an exception](./spec/acceptance/realtime/channel_spec.rb#L1520)
370
370
  * with a non-String client_id in the message
371
- * [throws an exception](./spec/acceptance/realtime/channel_spec.rb#L1529)
371
+ * [throws an exception](./spec/acceptance/realtime/channel_spec.rb#L1527)
372
372
  * with an empty client_id in the message
373
- * [succeeds and publishes without a client_id](./spec/acceptance/realtime/channel_spec.rb#L1536)
373
+ * [succeeds and publishes without a client_id](./spec/acceptance/realtime/channel_spec.rb#L1534)
374
374
  * when authenticated with a Token string with an implicit client_id
375
375
  * before the client is CONNECTED and the client's identity has been obtained
376
376
  * with a valid client_id in the message
377
- * [succeeds](./spec/acceptance/realtime/channel_spec.rb#L1558)
377
+ * [succeeds](./spec/acceptance/realtime/channel_spec.rb#L1556)
378
378
  * with an invalid client_id in the message
379
- * [succeeds in the client library ( while connecting ) but then fails when delivered to Ably](./spec/acceptance/realtime/channel_spec.rb#L1573)
379
+ * [succeeds in the client library ( while connecting ) but then fails when delivered to Ably](./spec/acceptance/realtime/channel_spec.rb#L1571)
380
380
  * with an empty client_id in the message
381
- * [succeeds and publishes with an implicit client_id](./spec/acceptance/realtime/channel_spec.rb#L1587)
381
+ * [succeeds and publishes with an implicit client_id](./spec/acceptance/realtime/channel_spec.rb#L1585)
382
382
  * after the client is CONNECTED and the client's identity is known
383
383
  * with a valid client_id in the message
384
- * [succeeds](./spec/acceptance/realtime/channel_spec.rb#L1603)
384
+ * [succeeds](./spec/acceptance/realtime/channel_spec.rb#L1601)
385
385
  * with an invalid client_id in the message
386
- * [throws an exception](./spec/acceptance/realtime/channel_spec.rb#L1617)
386
+ * [throws an exception](./spec/acceptance/realtime/channel_spec.rb#L1615)
387
387
  * with an empty client_id in the message
388
- * [succeeds and publishes with an implicit client_id](./spec/acceptance/realtime/channel_spec.rb#L1626)
388
+ * [succeeds and publishes with an implicit client_id](./spec/acceptance/realtime/channel_spec.rb#L1624)
389
389
  * when authenticated with a valid client_id
390
390
  * with a valid client_id
391
- * [succeeds](./spec/acceptance/realtime/channel_spec.rb#L1648)
391
+ * [succeeds](./spec/acceptance/realtime/channel_spec.rb#L1646)
392
392
  * with a wildcard client_id in the message
393
- * [throws an exception](./spec/acceptance/realtime/channel_spec.rb#L1662)
393
+ * [throws an exception](./spec/acceptance/realtime/channel_spec.rb#L1660)
394
394
  * with an invalid client_id in the message
395
- * [throws an exception](./spec/acceptance/realtime/channel_spec.rb#L1669)
395
+ * [throws an exception](./spec/acceptance/realtime/channel_spec.rb#L1667)
396
396
  * with an empty client_id in the message
397
- * [succeeds and publishes with an implicit client_id](./spec/acceptance/realtime/channel_spec.rb#L1676)
397
+ * [succeeds and publishes with an implicit client_id](./spec/acceptance/realtime/channel_spec.rb#L1674)
398
398
  * when anonymous and no client_id
399
399
  * with a client_id in the message
400
- * [throws an exception](./spec/acceptance/realtime/channel_spec.rb#L1697)
400
+ * [throws an exception](./spec/acceptance/realtime/channel_spec.rb#L1695)
401
401
  * with a wildcard client_id in the message
402
- * [throws an exception](./spec/acceptance/realtime/channel_spec.rb#L1704)
402
+ * [throws an exception](./spec/acceptance/realtime/channel_spec.rb#L1702)
403
403
  * with an empty client_id in the message
404
- * [succeeds and publishes with an implicit client_id](./spec/acceptance/realtime/channel_spec.rb#L1711)
404
+ * [succeeds and publishes with an implicit client_id](./spec/acceptance/realtime/channel_spec.rb#L1709)
405
405
  * message size exceeded (#TO3l8)
406
406
  * and max_message_size is default (65536 bytes)
407
- * [should allow to send a message (32 bytes)](./spec/acceptance/realtime/channel_spec.rb#L1734)
408
- * [should not allow to send a message (700000 bytes)](./spec/acceptance/realtime/channel_spec.rb#L1744)
407
+ * [should allow to send a message (32 bytes)](./spec/acceptance/realtime/channel_spec.rb#L1732)
408
+ * [should not allow to send a message (700000 bytes)](./spec/acceptance/realtime/channel_spec.rb#L1742)
409
409
  * and max_message_size is customized (11 bytes)
410
410
  * and the message size is 30 bytes
411
- * [should not allow to send a message](./spec/acceptance/realtime/channel_spec.rb#L1765)
411
+ * [should not allow to send a message](./spec/acceptance/realtime/channel_spec.rb#L1763)
412
412
  * and max_message_size is nil
413
413
  * and the message size is 30 bytes
414
- * [should allow to send a message](./spec/acceptance/realtime/channel_spec.rb#L1787)
414
+ * [should allow to send a message](./spec/acceptance/realtime/channel_spec.rb#L1785)
415
415
  * and the message size is 65537 bytes
416
- * [should not allow to send a message](./spec/acceptance/realtime/channel_spec.rb#L1806)
416
+ * [should not allow to send a message](./spec/acceptance/realtime/channel_spec.rb#L1804)
417
417
  * #subscribe
418
418
  * with an event argument
419
- * [subscribes for a single event](./spec/acceptance/realtime/channel_spec.rb#L1826)
419
+ * [subscribes for a single event](./spec/acceptance/realtime/channel_spec.rb#L1824)
420
420
  * before attach
421
- * [receives messages as soon as attached](./spec/acceptance/realtime/channel_spec.rb#L1836)
421
+ * [receives messages as soon as attached](./spec/acceptance/realtime/channel_spec.rb#L1834)
422
422
  * with no event argument
423
- * [subscribes for all events](./spec/acceptance/realtime/channel_spec.rb#L1850)
423
+ * [subscribes for all events](./spec/acceptance/realtime/channel_spec.rb#L1848)
424
424
  * with a callback that raises an exception
425
- * [logs the error and continues](./spec/acceptance/realtime/channel_spec.rb#L1862)
425
+ * [logs the error and continues](./spec/acceptance/realtime/channel_spec.rb#L1860)
426
426
  * many times with different event names
427
- * [filters events accordingly to each callback](./spec/acceptance/realtime/channel_spec.rb#L1883)
427
+ * [filters events accordingly to each callback](./spec/acceptance/realtime/channel_spec.rb#L1881)
428
428
  * #unsubscribe
429
429
  * with an event argument
430
- * [unsubscribes for a single event](./spec/acceptance/realtime/channel_spec.rb#L1908)
430
+ * [unsubscribes for a single event](./spec/acceptance/realtime/channel_spec.rb#L1906)
431
431
  * with no event argument
432
- * [unsubscribes for a single event](./spec/acceptance/realtime/channel_spec.rb#L1923)
432
+ * [unsubscribes for a single event](./spec/acceptance/realtime/channel_spec.rb#L1921)
433
433
  * when connection state changes to
434
434
  * :failed
435
435
  * an :attaching channel
436
- * [transitions state to :failed (#RTL3a)](./spec/acceptance/realtime/channel_spec.rb#L1948)
436
+ * [transitions state to :failed (#RTL3a)](./spec/acceptance/realtime/channel_spec.rb#L1946)
437
437
  * an :attached channel
438
- * [transitions state to :failed (#RTL3a)](./spec/acceptance/realtime/channel_spec.rb#L1965)
439
- * [updates the channel error_reason (#RTL3a)](./spec/acceptance/realtime/channel_spec.rb#L1979)
438
+ * [transitions state to :failed (#RTL3a)](./spec/acceptance/realtime/channel_spec.rb#L1963)
439
+ * [updates the channel error_reason (#RTL3a)](./spec/acceptance/realtime/channel_spec.rb#L1977)
440
440
  * a :detached channel
441
- * [remains in the :detached state (#RTL3a)](./spec/acceptance/realtime/channel_spec.rb#L1995)
441
+ * [remains in the :detached state (#RTL3a)](./spec/acceptance/realtime/channel_spec.rb#L1993)
442
442
  * a :failed channel
443
- * [remains in the :failed state and ignores the failure error (#RTL3a)](./spec/acceptance/realtime/channel_spec.rb#L2018)
443
+ * [remains in the :failed state and ignores the failure error (#RTL3a)](./spec/acceptance/realtime/channel_spec.rb#L2016)
444
444
  * a channel ATTACH request
445
- * [fails the deferrable (#RTL4b)](./spec/acceptance/realtime/channel_spec.rb#L2040)
445
+ * [fails the deferrable (#RTL4b)](./spec/acceptance/realtime/channel_spec.rb#L2038)
446
446
  * :closed
447
447
  * an :attached channel
448
- * [transitions state to :detached (#RTL3b)](./spec/acceptance/realtime/channel_spec.rb#L2056)
448
+ * [transitions state to :detached (#RTL3b)](./spec/acceptance/realtime/channel_spec.rb#L2054)
449
449
  * an :attaching channel (#RTL3b)
450
- * [transitions state to :detached](./spec/acceptance/realtime/channel_spec.rb#L2069)
450
+ * [transitions state to :detached](./spec/acceptance/realtime/channel_spec.rb#L2067)
451
451
  * a :detached channel
452
- * [remains in the :detached state (#RTL3b)](./spec/acceptance/realtime/channel_spec.rb#L2086)
452
+ * [remains in the :detached state (#RTL3b)](./spec/acceptance/realtime/channel_spec.rb#L2084)
453
453
  * a :failed channel
454
- * [remains in the :failed state and retains the error_reason (#RTL3b)](./spec/acceptance/realtime/channel_spec.rb#L2109)
454
+ * [remains in the :failed state and retains the error_reason (#RTL3b)](./spec/acceptance/realtime/channel_spec.rb#L2107)
455
455
  * a channel ATTACH request when connection CLOSED
456
- * [fails the deferrable (#RTL4b)](./spec/acceptance/realtime/channel_spec.rb#L2131)
456
+ * [fails the deferrable (#RTL4b)](./spec/acceptance/realtime/channel_spec.rb#L2129)
457
457
  * a channel ATTACH request when connection CLOSING
458
- * [fails the deferrable (#RTL4b)](./spec/acceptance/realtime/channel_spec.rb#L2145)
458
+ * [fails the deferrable (#RTL4b)](./spec/acceptance/realtime/channel_spec.rb#L2143)
459
459
  * :suspended
460
460
  * an :attaching channel
461
- * [transitions state to :suspended (#RTL3c)](./spec/acceptance/realtime/channel_spec.rb#L2161)
461
+ * [transitions state to :suspended (#RTL3c)](./spec/acceptance/realtime/channel_spec.rb#L2159)
462
462
  * an :attached channel
463
- * [transitions state to :suspended (#RTL3c)](./spec/acceptance/realtime/channel_spec.rb#L2175)
463
+ * [transitions state to :suspended (#RTL3c)](./spec/acceptance/realtime/channel_spec.rb#L2173)
464
464
  * reattaching (#RTN15c3)
465
- * [transitions state automatically to :attaching once the connection is re-established ](./spec/acceptance/realtime/channel_spec.rb#L2188)
466
- * [sends ATTACH_RESUME flag when reattaching (RTL4j)](./spec/acceptance/realtime/channel_spec.rb#L2203)
465
+ * [transitions state automatically to :attaching once the connection is re-established ](./spec/acceptance/realtime/channel_spec.rb#L2186)
466
+ * [sends ATTACH_RESUME flag when reattaching (RTL4j)](./spec/acceptance/realtime/channel_spec.rb#L2201)
467
467
  * a :detached channel
468
- * [remains in the :detached state (#RTL3c)](./spec/acceptance/realtime/channel_spec.rb#L2225)
468
+ * [remains in the :detached state (#RTL3c)](./spec/acceptance/realtime/channel_spec.rb#L2223)
469
469
  * a :failed channel
470
- * [remains in the :failed state and retains the error_reason (#RTL3c)](./spec/acceptance/realtime/channel_spec.rb#L2248)
470
+ * [remains in the :failed state and retains the error_reason (#RTL3c)](./spec/acceptance/realtime/channel_spec.rb#L2246)
471
471
  * a channel ATTACH request when connection SUSPENDED (#RTL4b)
472
- * [fails the deferrable](./spec/acceptance/realtime/channel_spec.rb#L2272)
472
+ * [fails the deferrable](./spec/acceptance/realtime/channel_spec.rb#L2270)
473
473
  * :connected
474
474
  * a :suspended channel
475
- * [is automatically reattached (#RTL3d)](./spec/acceptance/realtime/channel_spec.rb#L2288)
475
+ * [is automatically reattached (#RTL3d)](./spec/acceptance/realtime/channel_spec.rb#L2286)
476
476
  * when re-attach attempt fails
477
- * [returns to a suspended state (#RTL3d)](./spec/acceptance/realtime/channel_spec.rb#L2307)
477
+ * [returns to a suspended state (#RTL3d)](./spec/acceptance/realtime/channel_spec.rb#L2305)
478
478
  * :disconnected
479
479
  * with an initialized channel
480
- * [has no effect on the channel states (#RTL3e)](./spec/acceptance/realtime/channel_spec.rb#L2336)
480
+ * [has no effect on the channel states (#RTL3e)](./spec/acceptance/realtime/channel_spec.rb#L2334)
481
481
  * with an attaching channel
482
- * [has no effect on the channel states (#RTL3e)](./spec/acceptance/realtime/channel_spec.rb#L2349)
482
+ * [has no effect on the channel states (#RTL3e)](./spec/acceptance/realtime/channel_spec.rb#L2347)
483
483
  * with an attached channel
484
- * [has no effect on the channel states (#RTL3e)](./spec/acceptance/realtime/channel_spec.rb#L2364)
484
+ * [has no effect on the channel states (#RTL3e)](./spec/acceptance/realtime/channel_spec.rb#L2362)
485
485
  * with a detached channel
486
- * [has no effect on the channel states (#RTL3e)](./spec/acceptance/realtime/channel_spec.rb#L2380)
486
+ * [has no effect on the channel states (#RTL3e)](./spec/acceptance/realtime/channel_spec.rb#L2378)
487
487
  * with a failed channel
488
- * [has no effect on the channel states (#RTL3e)](./spec/acceptance/realtime/channel_spec.rb#L2404)
488
+ * [has no effect on the channel states (#RTL3e)](./spec/acceptance/realtime/channel_spec.rb#L2402)
489
489
  * #presence
490
- * [returns a Ably::Realtime::Presence object](./spec/acceptance/realtime/channel_spec.rb#L2419)
490
+ * [returns a Ably::Realtime::Presence object](./spec/acceptance/realtime/channel_spec.rb#L2417)
491
491
  * #set_options (#RTL16a)
492
492
  * when channel is attaching
493
493
  * behaves like an update that sends ATTACH message
494
- * [sends an ATTACH message on options change](./spec/acceptance/realtime/channel_spec.rb#L2436)
494
+ * [sends an ATTACH message on options change](./spec/acceptance/realtime/channel_spec.rb#L2434)
495
495
  * when channel is attached
496
496
  * behaves like an update that sends ATTACH message
497
- * [sends an ATTACH message on options change](./spec/acceptance/realtime/channel_spec.rb#L2436)
497
+ * [sends an ATTACH message on options change](./spec/acceptance/realtime/channel_spec.rb#L2434)
498
498
  * when channel is initialized
499
- * [doesn't send ATTACH message](./spec/acceptance/realtime/channel_spec.rb#L2469)
499
+ * [doesn't send ATTACH message](./spec/acceptance/realtime/channel_spec.rb#L2467)
500
500
  * channel state change
501
- * [emits a ChannelStateChange object](./spec/acceptance/realtime/channel_spec.rb#L2485)
501
+ * [emits a ChannelStateChange object](./spec/acceptance/realtime/channel_spec.rb#L2483)
502
502
  * ChannelStateChange object
503
- * [has current state](./spec/acceptance/realtime/channel_spec.rb#L2494)
504
- * [has a previous state](./spec/acceptance/realtime/channel_spec.rb#L2503)
505
- * [has the event that generated the state change (#TA5)](./spec/acceptance/realtime/channel_spec.rb#L2512)
506
- * [has an empty reason when there is no error](./spec/acceptance/realtime/channel_spec.rb#L2530)
503
+ * [has current state](./spec/acceptance/realtime/channel_spec.rb#L2492)
504
+ * [has a previous state](./spec/acceptance/realtime/channel_spec.rb#L2501)
505
+ * [has the event that generated the state change (#TA5)](./spec/acceptance/realtime/channel_spec.rb#L2510)
506
+ * [has an empty reason when there is no error](./spec/acceptance/realtime/channel_spec.rb#L2528)
507
507
  * on failure
508
- * [has a reason Error object when there is an error on the channel](./spec/acceptance/realtime/channel_spec.rb#L2545)
508
+ * [has a reason Error object when there is an error on the channel](./spec/acceptance/realtime/channel_spec.rb#L2543)
509
509
  * #resume (#RTL2f)
510
- * [is false when a channel first attaches](./spec/acceptance/realtime/channel_spec.rb#L2560)
511
- * [is true when a connection is recovered and the channel is attached](./spec/acceptance/realtime/channel_spec.rb#L2568)
512
- * [is false when a connection fails to recover and the channel is attached](./spec/acceptance/realtime/channel_spec.rb#L2587)
510
+ * [is false when a channel first attaches](./spec/acceptance/realtime/channel_spec.rb#L2558)
511
+ * [is true when a connection is recovered and the channel is attached](./spec/acceptance/realtime/channel_spec.rb#L2566)
512
+ * [is false when a connection fails to recover and the channel is attached](./spec/acceptance/realtime/channel_spec.rb#L2585)
513
513
  * when a connection resume fails
514
- * [is false when channel_serial goes nil (RTP5a1) and the channel is automatically re-attached](./spec/acceptance/realtime/channel_spec.rb#L2609)
515
- * [is true when channel_serial is intact and the channel is automatically re-attached](./spec/acceptance/realtime/channel_spec.rb#L2627)
514
+ * [is false when channel_serial goes nil (RTP5a1) and the channel is automatically re-attached](./spec/acceptance/realtime/channel_spec.rb#L2607)
515
+ * [is true when channel_serial is intact and the channel is automatically re-attached](./spec/acceptance/realtime/channel_spec.rb#L2625)
516
516
  * moves to
517
517
  * suspended
518
- * [all queued messages fail with NACK (#RTL11)](./spec/acceptance/realtime/channel_spec.rb#L2654)
519
- * [all published messages awaiting an ACK do nothing (#RTL11a)](./spec/acceptance/realtime/channel_spec.rb#L2677)
518
+ * [all queued messages fail with NACK (#RTL11)](./spec/acceptance/realtime/channel_spec.rb#L2652)
519
+ * [all published messages awaiting an ACK do nothing (#RTL11a)](./spec/acceptance/realtime/channel_spec.rb#L2675)
520
520
  * failed
521
- * [all queued messages fail with NACK (#RTL11)](./spec/acceptance/realtime/channel_spec.rb#L2654)
522
- * [all published messages awaiting an ACK do nothing (#RTL11a)](./spec/acceptance/realtime/channel_spec.rb#L2677)
521
+ * [all queued messages fail with NACK (#RTL11)](./spec/acceptance/realtime/channel_spec.rb#L2652)
522
+ * [all published messages awaiting an ACK do nothing (#RTL11a)](./spec/acceptance/realtime/channel_spec.rb#L2675)
523
523
  * when it receives a server-initiated DETACHED (#RTL13)
524
524
  * and channel is initialized (#RTL13)
525
- * [does nothing](./spec/acceptance/realtime/channel_spec.rb#L2712)
525
+ * [does nothing](./spec/acceptance/realtime/channel_spec.rb#L2710)
526
526
  * and channel is failed
527
- * [does nothing (#RTL13)](./spec/acceptance/realtime/channel_spec.rb#L2733)
527
+ * [does nothing (#RTL13)](./spec/acceptance/realtime/channel_spec.rb#L2731)
528
528
  * and channel is attached
529
- * [reattaches immediately (#RTL13a) with ATTACH_RESUME flag(RTL4j)](./spec/acceptance/realtime/channel_spec.rb#L2749)
529
+ * [reattaches immediately (#RTL13a) with ATTACH_RESUME flag(RTL4j)](./spec/acceptance/realtime/channel_spec.rb#L2747)
530
530
  * and channel is suspended
531
- * [reattaches immediately (#RTL13a) with ATTACH_RESUME flag(RTL4j)](./spec/acceptance/realtime/channel_spec.rb#L2778)
531
+ * [reattaches immediately (#RTL13a) with ATTACH_RESUME flag(RTL4j)](./spec/acceptance/realtime/channel_spec.rb#L2776)
532
532
  * when connection is no longer connected
533
- * [will not attempt to reattach (#RTL13c)](./spec/acceptance/realtime/channel_spec.rb#L2810)
533
+ * [will not attempt to reattach (#RTL13c)](./spec/acceptance/realtime/channel_spec.rb#L2808)
534
534
  * and channel is attaching
535
- * [will move to the SUSPENDED state and then attempt to ATTACH with the ATTACHING state (#RTL13b)](./spec/acceptance/realtime/channel_spec.rb#L2836)
535
+ * [will move to the SUSPENDED state and then attempt to ATTACH with the ATTACHING state (#RTL13b)](./spec/acceptance/realtime/channel_spec.rb#L2834)
536
536
  * when it receives an ERROR ProtocolMessage
537
- * [should transition to the failed state and the error_reason should be set (#RTL14)](./spec/acceptance/realtime/channel_spec.rb#L2885)
537
+ * [should transition to the failed state and the error_reason should be set (#RTL14)](./spec/acceptance/realtime/channel_spec.rb#L2883)
538
538
 
539
539
  ### Ably::Realtime::Channels
540
540
  _(see [spec/acceptance/realtime/channels_spec.rb](./spec/acceptance/realtime/channels_spec.rb))_
@@ -591,54 +591,54 @@ _(see [spec/acceptance/realtime/client_spec.rb](./spec/acceptance/realtime/clien
591
591
  * [sets Client#client_id to the new token's client_id immediately when connecting](./spec/acceptance/realtime/client_spec.rb#L127)
592
592
  * with a wildcard client_id token
593
593
  * and an explicit client_id in ClientOptions
594
- * PENDING: *[allows uses the explicit client_id in the connection](./spec/acceptance/realtime/client_spec.rb#L146)*
594
+ * [allows uses the explicit client_id in the connection](./spec/acceptance/realtime/client_spec.rb#L145)
595
595
  * and client_id omitted in ClientOptions
596
- * [uses the token provided clientId in the connection](./spec/acceptance/realtime/client_spec.rb#L162)
596
+ * [uses the token provided clientId in the connection](./spec/acceptance/realtime/client_spec.rb#L161)
597
597
  * with an invalid wildcard "*" :client_id
598
- * [raises an exception](./spec/acceptance/realtime/client_spec.rb#L178)
598
+ * [raises an exception](./spec/acceptance/realtime/client_spec.rb#L177)
599
599
  * realtime connection settings
600
600
  * defaults
601
- * [disconnected_retry_timeout is 15s](./spec/acceptance/realtime/client_spec.rb#L187)
602
- * [suspended_retry_timeout is 30s](./spec/acceptance/realtime/client_spec.rb#L192)
601
+ * [disconnected_retry_timeout is 15s](./spec/acceptance/realtime/client_spec.rb#L186)
602
+ * [suspended_retry_timeout is 30s](./spec/acceptance/realtime/client_spec.rb#L191)
603
603
  * overriden in ClientOptions
604
- * [disconnected_retry_timeout is updated](./spec/acceptance/realtime/client_spec.rb#L201)
605
- * [suspended_retry_timeout is updated](./spec/acceptance/realtime/client_spec.rb#L206)
604
+ * [disconnected_retry_timeout is updated](./spec/acceptance/realtime/client_spec.rb#L200)
605
+ * [suspended_retry_timeout is updated](./spec/acceptance/realtime/client_spec.rb#L205)
606
606
  * #connection
607
- * [provides access to the Connection object](./spec/acceptance/realtime/client_spec.rb#L215)
607
+ * [provides access to the Connection object](./spec/acceptance/realtime/client_spec.rb#L214)
608
608
  * #channels
609
- * [provides access to the Channels collection object](./spec/acceptance/realtime/client_spec.rb#L222)
609
+ * [provides access to the Channels collection object](./spec/acceptance/realtime/client_spec.rb#L221)
610
610
  * #auth
611
- * [provides access to the Realtime::Auth object](./spec/acceptance/realtime/client_spec.rb#L229)
611
+ * [provides access to the Realtime::Auth object](./spec/acceptance/realtime/client_spec.rb#L228)
612
612
  * #request (#RSC19*)
613
613
  * get
614
- * [returns an HttpPaginatedResponse object](./spec/acceptance/realtime/client_spec.rb#L241)
614
+ * [returns an HttpPaginatedResponse object](./spec/acceptance/realtime/client_spec.rb#L240)
615
615
  * 404 request to invalid URL
616
- * [returns an object with 404 status code and error message](./spec/acceptance/realtime/client_spec.rb#L250)
616
+ * [returns an object with 404 status code and error message](./spec/acceptance/realtime/client_spec.rb#L249)
617
617
  * paged results
618
- * [provides paging](./spec/acceptance/realtime/client_spec.rb#L264)
618
+ * [provides paging](./spec/acceptance/realtime/client_spec.rb#L263)
619
619
  * post
620
- * [supports post](./spec/acceptance/realtime/client_spec.rb#L295)
620
+ * [supports post](./spec/acceptance/realtime/client_spec.rb#L294)
621
621
  * delete
622
- * [supports delete](./spec/acceptance/realtime/client_spec.rb#L309)
622
+ * [supports delete](./spec/acceptance/realtime/client_spec.rb#L308)
623
623
  * patch
624
- * [supports patch](./spec/acceptance/realtime/client_spec.rb#L326)
624
+ * [supports patch](./spec/acceptance/realtime/client_spec.rb#L325)
625
625
  * put
626
- * [supports put](./spec/acceptance/realtime/client_spec.rb#L350)
626
+ * [supports put](./spec/acceptance/realtime/client_spec.rb#L349)
627
627
  * #publish (#TBC)
628
- * [publishing a message implicity connects and publishes the message successfully on the provided channel](./spec/acceptance/realtime/client_spec.rb#L368)
629
- * [publishing does not result in a channel being created](./spec/acceptance/realtime/client_spec.rb#L380)
630
- * [publishing supports an array of Message objects](./spec/acceptance/realtime/client_spec.rb#L408)
631
- * [publishing supports an array of Hash objects](./spec/acceptance/realtime/client_spec.rb#L420)
632
- * [publishing on a closed connection fails](./spec/acceptance/realtime/client_spec.rb#L432)
628
+ * [publishing a message implicity connects and publishes the message successfully on the provided channel](./spec/acceptance/realtime/client_spec.rb#L367)
629
+ * [publishing does not result in a channel being created](./spec/acceptance/realtime/client_spec.rb#L379)
630
+ * [publishing supports an array of Message objects](./spec/acceptance/realtime/client_spec.rb#L407)
631
+ * [publishing supports an array of Hash objects](./spec/acceptance/realtime/client_spec.rb#L419)
632
+ * [publishing on a closed connection fails](./spec/acceptance/realtime/client_spec.rb#L431)
633
633
  * with extras
634
- * [publishing supports extras](./spec/acceptance/realtime/client_spec.rb#L396)
634
+ * [publishing supports extras](./spec/acceptance/realtime/client_spec.rb#L395)
635
635
  * queue_messages ClientOption
636
636
  * when true
637
- * [will queue messages whilst connecting and publish once connected](./spec/acceptance/realtime/client_spec.rb#L448)
637
+ * [will queue messages whilst connecting and publish once connected](./spec/acceptance/realtime/client_spec.rb#L447)
638
638
  * when false
639
- * [will reject messages on an initializing connection](./spec/acceptance/realtime/client_spec.rb#L465)
639
+ * [will reject messages on an initializing connection](./spec/acceptance/realtime/client_spec.rb#L464)
640
640
  * with more than allowed messages in a single publish
641
- * [rejects the publish](./spec/acceptance/realtime/client_spec.rb#L482)
641
+ * [rejects the publish](./spec/acceptance/realtime/client_spec.rb#L481)
642
642
 
643
643
  ### Ably::Realtime::Connection failures
644
644
  _(see [spec/acceptance/realtime/connection_failures_spec.rb](./spec/acceptance/realtime/connection_failures_spec.rb))_
@@ -800,7 +800,7 @@ _(see [spec/acceptance/realtime/connection_spec.rb](./spec/acceptance/realtime/c
800
800
  * that expire
801
801
  * opening a new connection
802
802
  * with almost expired tokens
803
- * FAILED: ~~[renews token every time after it expires](./spec/acceptance/realtime/connection_spec.rb#L107)~~
803
+ * [renews token every time after it expires](./spec/acceptance/realtime/connection_spec.rb#L107)
804
804
  * with immediately expired token and no fallback hosts
805
805
  * [renews the token on connect, and makes one immediate subsequent attempt to obtain a new token (#RSA4b)](./spec/acceptance/realtime/connection_spec.rb#L137)
806
806
  * when disconnected_retry_timeout is 0.5 seconds
@@ -825,191 +825,191 @@ _(see [spec/acceptance/realtime/connection_spec.rb](./spec/acceptance/realtime/c
825
825
  * string
826
826
  * [sets the Client#client_id and Auth#client_id once CONNECTED](./spec/acceptance/realtime/connection_spec.rb#L374)
827
827
  * that is incompatible with the current client client_id
828
- * PENDING: *[fails the connection](./spec/acceptance/realtime/connection_spec.rb#L387)*
828
+ * [fails the connection](./spec/acceptance/realtime/connection_spec.rb#L386)
829
829
  * wildcard
830
- * [configures the Client#client_id and Auth#client_id with a wildcard once CONNECTED](./spec/acceptance/realtime/connection_spec.rb#L401)
830
+ * [configures the Client#client_id and Auth#client_id with a wildcard once CONNECTED](./spec/acceptance/realtime/connection_spec.rb#L400)
831
831
  * initialization state changes
832
832
  * with implicit #connect
833
- * [are emitted in order](./spec/acceptance/realtime/connection_spec.rb#L433)
833
+ * [are emitted in order](./spec/acceptance/realtime/connection_spec.rb#L432)
834
834
  * with explicit #connect
835
- * [are emitted in order](./spec/acceptance/realtime/connection_spec.rb#L439)
835
+ * [are emitted in order](./spec/acceptance/realtime/connection_spec.rb#L438)
836
836
  * #connect with no fallbacks
837
- * [returns a SafeDeferrable that catches exceptions in callbacks and logs them](./spec/acceptance/realtime/connection_spec.rb#L449)
838
- * [calls the Deferrable callback on success](./spec/acceptance/realtime/connection_spec.rb#L454)
839
- * [calls the provided block on success even if state changes to disconnected first](./spec/acceptance/realtime/connection_spec.rb#L461)
837
+ * [returns a SafeDeferrable that catches exceptions in callbacks and logs them](./spec/acceptance/realtime/connection_spec.rb#L448)
838
+ * [calls the Deferrable callback on success](./spec/acceptance/realtime/connection_spec.rb#L453)
839
+ * [calls the provided block on success even if state changes to disconnected first](./spec/acceptance/realtime/connection_spec.rb#L460)
840
840
  * when can't connect to host
841
- * [logs error on failed connection attempt](./spec/acceptance/realtime/connection_spec.rb#L490)
841
+ * [logs error on failed connection attempt](./spec/acceptance/realtime/connection_spec.rb#L489)
842
842
  * when explicitly reconnecting disconnected/suspended connection in retry (#RTN11c)
843
843
  * when suspended
844
- * [reconnects immediately](./spec/acceptance/realtime/connection_spec.rb#L530)
844
+ * [reconnects immediately](./spec/acceptance/realtime/connection_spec.rb#L529)
845
845
  * when disconnected
846
- * [reconnects immediately](./spec/acceptance/realtime/connection_spec.rb#L564)
846
+ * [reconnects immediately](./spec/acceptance/realtime/connection_spec.rb#L563)
847
847
  * when reconnecting a failed connection
848
- * [transitions all channels state to initialized and cleares error_reason](./spec/acceptance/realtime/connection_spec.rb#L594)
848
+ * [transitions all channels state to initialized and cleares error_reason](./spec/acceptance/realtime/connection_spec.rb#L593)
849
849
  * with invalid auth details
850
- * [calls the Deferrable errback only once on connection failure](./spec/acceptance/realtime/connection_spec.rb#L622)
850
+ * [calls the Deferrable errback only once on connection failure](./spec/acceptance/realtime/connection_spec.rb#L621)
851
851
  * when already connected
852
- * [does nothing and no further state changes are emitted](./spec/acceptance/realtime/connection_spec.rb#L638)
852
+ * [does nothing and no further state changes are emitted](./spec/acceptance/realtime/connection_spec.rb#L637)
853
853
  * connection#id
854
- * [is null before connecting](./spec/acceptance/realtime/connection_spec.rb#L652)
854
+ * [is null before connecting](./spec/acceptance/realtime/connection_spec.rb#L651)
855
855
  * connection#key
856
- * [is null before connecting](./spec/acceptance/realtime/connection_spec.rb#L659)
856
+ * [is null before connecting](./spec/acceptance/realtime/connection_spec.rb#L658)
857
857
  * once connected
858
858
  * connection#id
859
- * [is a string](./spec/acceptance/realtime/connection_spec.rb#L670)
860
- * [is unique from the connection#key](./spec/acceptance/realtime/connection_spec.rb#L677)
861
- * [is unique for every connection](./spec/acceptance/realtime/connection_spec.rb#L684)
859
+ * [is a string](./spec/acceptance/realtime/connection_spec.rb#L669)
860
+ * [is unique from the connection#key](./spec/acceptance/realtime/connection_spec.rb#L676)
861
+ * [is unique for every connection](./spec/acceptance/realtime/connection_spec.rb#L683)
862
862
  * connection#key
863
- * [is a string](./spec/acceptance/realtime/connection_spec.rb#L693)
864
- * [is unique from the connection#id](./spec/acceptance/realtime/connection_spec.rb#L700)
865
- * [is unique for every connection](./spec/acceptance/realtime/connection_spec.rb#L707)
863
+ * [is a string](./spec/acceptance/realtime/connection_spec.rb#L692)
864
+ * [is unique from the connection#id](./spec/acceptance/realtime/connection_spec.rb#L699)
865
+ * [is unique for every connection](./spec/acceptance/realtime/connection_spec.rb#L706)
866
866
  * following a previous connection being opened and closed
867
- * [reconnects and is provided with a new connection ID and connection key from the server](./spec/acceptance/realtime/connection_spec.rb#L717)
867
+ * [reconnects and is provided with a new connection ID and connection key from the server](./spec/acceptance/realtime/connection_spec.rb#L716)
868
868
  * when closing
869
- * [fails the deferrable before the connection is closed](./spec/acceptance/realtime/connection_spec.rb#L734)
869
+ * [fails the deferrable before the connection is closed](./spec/acceptance/realtime/connection_spec.rb#L733)
870
870
  * #msgSerial
871
871
  * when messages are queued for publish before a connection is established
872
- * [the msgSerial is always incrementing (and not reset when the new connection is established) ensuring messages are never de-duped by the realtime service](./spec/acceptance/realtime/connection_spec.rb#L758)
872
+ * [the msgSerial is always incrementing (and not reset when the new connection is established) ensuring messages are never de-duped by the realtime service](./spec/acceptance/realtime/connection_spec.rb#L757)
873
873
  * #close
874
- * [returns a SafeDeferrable that catches exceptions in callbacks and logs them](./spec/acceptance/realtime/connection_spec.rb#L790)
875
- * [calls the Deferrable callback on success](./spec/acceptance/realtime/connection_spec.rb#L797)
874
+ * [returns a SafeDeferrable that catches exceptions in callbacks and logs them](./spec/acceptance/realtime/connection_spec.rb#L789)
875
+ * [calls the Deferrable callback on success](./spec/acceptance/realtime/connection_spec.rb#L796)
876
876
  * when already closed
877
- * [does nothing and no further state changes are emitted](./spec/acceptance/realtime/connection_spec.rb#L808)
877
+ * [does nothing and no further state changes are emitted](./spec/acceptance/realtime/connection_spec.rb#L807)
878
878
  * when connection state is
879
879
  * :initialized
880
- * [changes the connection state to :closing and then immediately :closed without sending a ProtocolMessage CLOSE](./spec/acceptance/realtime/connection_spec.rb#L835)
880
+ * [changes the connection state to :closing and then immediately :closed without sending a ProtocolMessage CLOSE](./spec/acceptance/realtime/connection_spec.rb#L834)
881
881
  * :connecting RTN12f
882
882
  * :connected does not arrive when trying to close
883
- * [moves to closed](./spec/acceptance/realtime/connection_spec.rb#L853)
883
+ * [moves to closed](./spec/acceptance/realtime/connection_spec.rb#L852)
884
884
  * :connected arrive when trying to close
885
- * [moves to connected and then to closed](./spec/acceptance/realtime/connection_spec.rb#L880)
885
+ * [moves to connected and then to closed](./spec/acceptance/realtime/connection_spec.rb#L879)
886
886
  * :connected
887
- * [changes the connection state to :closing and waits for the server to confirm connection is :closed with a ProtocolMessage](./spec/acceptance/realtime/connection_spec.rb#L901)
887
+ * [changes the connection state to :closing and waits for the server to confirm connection is :closed with a ProtocolMessage](./spec/acceptance/realtime/connection_spec.rb#L900)
888
888
  * with an unresponsive connection
889
- * [force closes the connection when a :closed ProtocolMessage response is not received](./spec/acceptance/realtime/connection_spec.rb#L928)
889
+ * [force closes the connection when a :closed ProtocolMessage response is not received](./spec/acceptance/realtime/connection_spec.rb#L927)
890
890
  * :suspended RTN12d
891
- * [immediatly closes connection](./spec/acceptance/realtime/connection_spec.rb#L957)
891
+ * [immediatly closes connection](./spec/acceptance/realtime/connection_spec.rb#L956)
892
892
  * :disconnected RTN12d
893
- * [immediatly closes connection](./spec/acceptance/realtime/connection_spec.rb#L992)
893
+ * [immediatly closes connection](./spec/acceptance/realtime/connection_spec.rb#L991)
894
894
  * #ping
895
- * [echoes a heart beat (#RTN13a)](./spec/acceptance/realtime/connection_spec.rb#L1025)
896
- * [sends a unique ID in each protocol message (#RTN13e)](./spec/acceptance/realtime/connection_spec.rb#L1035)
897
- * [waits until the connection becomes CONNECTED when in the CONNETING state](./spec/acceptance/realtime/connection_spec.rb#L1059)
895
+ * [echoes a heart beat (#RTN13a)](./spec/acceptance/realtime/connection_spec.rb#L1024)
896
+ * [sends a unique ID in each protocol message (#RTN13e)](./spec/acceptance/realtime/connection_spec.rb#L1034)
897
+ * [waits until the connection becomes CONNECTED when in the CONNETING state](./spec/acceptance/realtime/connection_spec.rb#L1058)
898
898
  * with incompatible states
899
899
  * when not connected
900
- * [fails the deferrable (#RTN13b)](./spec/acceptance/realtime/connection_spec.rb#L1072)
900
+ * [fails the deferrable (#RTN13b)](./spec/acceptance/realtime/connection_spec.rb#L1071)
901
901
  * when suspended
902
- * [fails the deferrable (#RTN13b)](./spec/acceptance/realtime/connection_spec.rb#L1081)
902
+ * [fails the deferrable (#RTN13b)](./spec/acceptance/realtime/connection_spec.rb#L1080)
903
903
  * when failed
904
- * [fails the deferrable (#RTN13b)](./spec/acceptance/realtime/connection_spec.rb#L1093)
904
+ * [fails the deferrable (#RTN13b)](./spec/acceptance/realtime/connection_spec.rb#L1092)
905
905
  * when closed
906
- * [fails the deferrable (#RTN13b)](./spec/acceptance/realtime/connection_spec.rb#L1105)
906
+ * [fails the deferrable (#RTN13b)](./spec/acceptance/realtime/connection_spec.rb#L1104)
907
907
  * when it becomes closed
908
- * [fails the deferrable (#RTN13b)](./spec/acceptance/realtime/connection_spec.rb#L1119)
908
+ * [fails the deferrable (#RTN13b)](./spec/acceptance/realtime/connection_spec.rb#L1118)
909
909
  * with a success block that raises an exception
910
- * [catches the exception and logs the error](./spec/acceptance/realtime/connection_spec.rb#L1132)
910
+ * [catches the exception and logs the error](./spec/acceptance/realtime/connection_spec.rb#L1131)
911
911
  * when ping times out
912
- * [fails the deferrable logs a warning (#RTN13a, #RTN13c)](./spec/acceptance/realtime/connection_spec.rb#L1146)
913
- * [yields to the block with a nil value](./spec/acceptance/realtime/connection_spec.rb#L1165)
912
+ * [fails the deferrable logs a warning (#RTN13a, #RTN13c)](./spec/acceptance/realtime/connection_spec.rb#L1145)
913
+ * [yields to the block with a nil value](./spec/acceptance/realtime/connection_spec.rb#L1164)
914
914
  * Heartbeats (#RTN23)
915
915
  * heartbeat interval
916
916
  * when reduced artificially
917
- * [is the sum of the max_idle_interval and realtime_request_timeout (#RTN23a)](./spec/acceptance/realtime/connection_spec.rb#L1191)
918
- * [disconnects the transport if no heartbeat received since connected (#RTN23a)](./spec/acceptance/realtime/connection_spec.rb#L1201)
919
- * [disconnects the transport if no heartbeat received since last event received (#RTN23a)](./spec/acceptance/realtime/connection_spec.rb#L1212)
917
+ * [is the sum of the max_idle_interval and realtime_request_timeout (#RTN23a)](./spec/acceptance/realtime/connection_spec.rb#L1190)
918
+ * [disconnects the transport if no heartbeat received since connected (#RTN23a)](./spec/acceptance/realtime/connection_spec.rb#L1200)
919
+ * [disconnects the transport if no heartbeat received since last event received (#RTN23a)](./spec/acceptance/realtime/connection_spec.rb#L1211)
920
920
  * transport-level heartbeats are supported in the websocket transport
921
- * [provides the heartbeats argument in the websocket connection params (#RTN23b)](./spec/acceptance/realtime/connection_spec.rb#L1227)
922
- * [receives websocket heartbeat messages (#RTN23b) [slow test as need to wait for heartbeat]](./spec/acceptance/realtime/connection_spec.rb#L1236)
921
+ * [provides the heartbeats argument in the websocket connection params (#RTN23b)](./spec/acceptance/realtime/connection_spec.rb#L1226)
922
+ * [receives websocket heartbeat messages (#RTN23b) [slow test as need to wait for heartbeat]](./spec/acceptance/realtime/connection_spec.rb#L1235)
923
923
  * with websocket heartbeats disabled (undocumented)
924
- * [does not provide the heartbeats argument in the websocket connection params (#RTN23b)](./spec/acceptance/realtime/connection_spec.rb#L1252)
925
- * [receives websocket protocol messages (#RTN23b) [slow test as need to wait for heartbeat]](./spec/acceptance/realtime/connection_spec.rb#L1261)
924
+ * [does not provide the heartbeats argument in the websocket connection params (#RTN23b)](./spec/acceptance/realtime/connection_spec.rb#L1251)
925
+ * [receives websocket protocol messages (#RTN23b) [slow test as need to wait for heartbeat]](./spec/acceptance/realtime/connection_spec.rb#L1260)
926
926
  * #details
927
- * [is nil before connected](./spec/acceptance/realtime/connection_spec.rb#L1279)
928
- * [contains the ConnectionDetails object once connected (#RTN21)](./spec/acceptance/realtime/connection_spec.rb#L1286)
929
- * [contains the new ConnectionDetails object once a subsequent connection is created (#RTN21)](./spec/acceptance/realtime/connection_spec.rb#L1295)
927
+ * [is nil before connected](./spec/acceptance/realtime/connection_spec.rb#L1278)
928
+ * [contains the ConnectionDetails object once connected (#RTN21)](./spec/acceptance/realtime/connection_spec.rb#L1285)
929
+ * [contains the new ConnectionDetails object once a subsequent connection is created (#RTN21)](./spec/acceptance/realtime/connection_spec.rb#L1294)
930
930
  * with a different default connection_state_ttl
931
- * [updates the private Connection#connection_state_ttl when received from Ably in ConnectionDetails](./spec/acceptance/realtime/connection_spec.rb#L1316)
931
+ * [updates the private Connection#connection_state_ttl when received from Ably in ConnectionDetails](./spec/acceptance/realtime/connection_spec.rb#L1315)
932
932
  * recovery
933
933
  * #recovery_key
934
- * [is available when connection is in one of the states: connecting, connected, disconnected](./spec/acceptance/realtime/connection_spec.rb#L1353)
935
- * [is nil when connection is explicitly CLOSED](./spec/acceptance/realtime/connection_spec.rb#L1383)
934
+ * [is available when connection is in one of the states: connecting, connected, disconnected](./spec/acceptance/realtime/connection_spec.rb#L1352)
935
+ * [is nil when connection is explicitly CLOSED](./spec/acceptance/realtime/connection_spec.rb#L1382)
936
936
  * opening a new connection using a recently disconnected connection's #recovery_key
937
937
  * connection#id after recovery
938
- * [remains the same](./spec/acceptance/realtime/connection_spec.rb#L1395)
938
+ * [remains the same](./spec/acceptance/realtime/connection_spec.rb#L1394)
939
939
  * when messages have been sent whilst the old connection is disconnected
940
940
  * the new connection
941
- * [recovers server-side queued messages](./spec/acceptance/realtime/connection_spec.rb#L1417)
941
+ * [recovers server-side queued messages](./spec/acceptance/realtime/connection_spec.rb#L1416)
942
942
  * when messages have been published
943
943
  * the new connection
944
- * [uses the correct msgSerial from the old connection](./spec/acceptance/realtime/connection_spec.rb#L1446)
944
+ * [uses the correct msgSerial from the old connection](./spec/acceptance/realtime/connection_spec.rb#L1445)
945
945
  * when messages are published before the new connection is recovered
946
946
  * the new connection
947
- * [uses the correct msgSerial from the old connection for the queued messages](./spec/acceptance/realtime/connection_spec.rb#L1476)
947
+ * [uses the correct msgSerial from the old connection for the queued messages](./spec/acceptance/realtime/connection_spec.rb#L1475)
948
948
  * with :recover option
949
949
  * with invalid syntax
950
- * [logs recovery decode error as a warning and connects successfully](./spec/acceptance/realtime/connection_spec.rb#L1523)
950
+ * [logs recovery decode error as a warning and connects successfully](./spec/acceptance/realtime/connection_spec.rb#L1522)
951
951
  * with invalid connection key
952
- * [connects but sets the error reason and includes the reason in the state change](./spec/acceptance/realtime/connection_spec.rb#L1538)
952
+ * [connects but sets the error reason and includes the reason in the state change](./spec/acceptance/realtime/connection_spec.rb#L1537)
953
953
  * with many connections simultaneously
954
- * [opens each with a unique connection#id and connection#key](./spec/acceptance/realtime/connection_spec.rb#L1557)
954
+ * [opens each with a unique connection#id and connection#key](./spec/acceptance/realtime/connection_spec.rb#L1556)
955
955
  * when a state transition is unsupported
956
- * [logs the invalid state change as fatal](./spec/acceptance/realtime/connection_spec.rb#L1577)
956
+ * [logs the invalid state change as fatal](./spec/acceptance/realtime/connection_spec.rb#L1576)
957
957
  * protocol failure
958
958
  * receiving an invalid ProtocolMessage
959
- * [emits an error on the connection and logs a fatal error message](./spec/acceptance/realtime/connection_spec.rb#L1593)
959
+ * [emits an error on the connection and logs a fatal error message](./spec/acceptance/realtime/connection_spec.rb#L1592)
960
960
  * undocumented method
961
961
  * #internet_up?
962
- * [returns a Deferrable](./spec/acceptance/realtime/connection_spec.rb#L1611)
962
+ * [returns a Deferrable](./spec/acceptance/realtime/connection_spec.rb#L1610)
963
963
  * internet up URL protocol
964
964
  * when using TLS for the connection
965
- * [uses TLS for the Internet check to https://internet-up.ably-realtime.com/is-the-internet-up.txt](./spec/acceptance/realtime/connection_spec.rb#L1622)
965
+ * [uses TLS for the Internet check to https://internet-up.ably-realtime.com/is-the-internet-up.txt](./spec/acceptance/realtime/connection_spec.rb#L1621)
966
966
  * when using a non-secured connection
967
- * [uses TLS for the Internet check to http://internet-up.ably-realtime.com/is-the-internet-up.txt](./spec/acceptance/realtime/connection_spec.rb#L1632)
967
+ * [uses TLS for the Internet check to http://internet-up.ably-realtime.com/is-the-internet-up.txt](./spec/acceptance/realtime/connection_spec.rb#L1631)
968
968
  * when the Internet is up
969
- * [calls the block with true](./spec/acceptance/realtime/connection_spec.rb#L1663)
970
- * [calls the success callback of the Deferrable](./spec/acceptance/realtime/connection_spec.rb#L1670)
969
+ * [calls the block with true](./spec/acceptance/realtime/connection_spec.rb#L1662)
970
+ * [calls the success callback of the Deferrable](./spec/acceptance/realtime/connection_spec.rb#L1669)
971
971
  * with a TLS connection
972
- * [checks the Internet up URL over TLS](./spec/acceptance/realtime/connection_spec.rb#L1646)
972
+ * [checks the Internet up URL over TLS](./spec/acceptance/realtime/connection_spec.rb#L1645)
973
973
  * with a non-TLS connection
974
- * [checks the Internet up URL over TLS](./spec/acceptance/realtime/connection_spec.rb#L1656)
974
+ * [checks the Internet up URL over TLS](./spec/acceptance/realtime/connection_spec.rb#L1655)
975
975
  * when the Internet is down
976
- * [calls the block with false](./spec/acceptance/realtime/connection_spec.rb#L1685)
977
- * [calls the failure callback of the Deferrable](./spec/acceptance/realtime/connection_spec.rb#L1692)
976
+ * [calls the block with false](./spec/acceptance/realtime/connection_spec.rb#L1684)
977
+ * [calls the failure callback of the Deferrable](./spec/acceptance/realtime/connection_spec.rb#L1691)
978
978
  * state change side effects
979
979
  * when connection enters the :disconnected state
980
- * [queues messages to be sent and all channels remain attached](./spec/acceptance/realtime/connection_spec.rb#L1706)
980
+ * [queues messages to be sent and all channels remain attached](./spec/acceptance/realtime/connection_spec.rb#L1705)
981
981
  * when connection enters the :suspended state
982
- * [moves the channels into the suspended state and prevents publishing of messages on those channels](./spec/acceptance/realtime/connection_spec.rb#L1739)
982
+ * [moves the channels into the suspended state and prevents publishing of messages on those channels](./spec/acceptance/realtime/connection_spec.rb#L1738)
983
983
  * when connection enters the :failed state
984
- * [sets all channels to failed and prevents publishing of messages on those channels](./spec/acceptance/realtime/connection_spec.rb#L1770)
984
+ * [sets all channels to failed and prevents publishing of messages on those channels](./spec/acceptance/realtime/connection_spec.rb#L1769)
985
985
  * connection state change
986
- * [emits event to all and single subscribers](./spec/acceptance/realtime/connection_spec.rb#L1784)
987
- * [emits a ConnectionStateChange object](./spec/acceptance/realtime/connection_spec.rb#L1799)
986
+ * [emits event to all and single subscribers](./spec/acceptance/realtime/connection_spec.rb#L1783)
987
+ * [emits a ConnectionStateChange object](./spec/acceptance/realtime/connection_spec.rb#L1798)
988
988
  * ConnectionStateChange object
989
- * [has current state](./spec/acceptance/realtime/connection_spec.rb#L1807)
990
- * [has a previous state](./spec/acceptance/realtime/connection_spec.rb#L1815)
991
- * [has the event that generated the state change (#TH5)](./spec/acceptance/realtime/connection_spec.rb#L1823)
992
- * [has an empty reason when there is no error](./spec/acceptance/realtime/connection_spec.rb#L1839)
989
+ * [has current state](./spec/acceptance/realtime/connection_spec.rb#L1806)
990
+ * [has a previous state](./spec/acceptance/realtime/connection_spec.rb#L1814)
991
+ * [has the event that generated the state change (#TH5)](./spec/acceptance/realtime/connection_spec.rb#L1822)
992
+ * [has an empty reason when there is no error](./spec/acceptance/realtime/connection_spec.rb#L1838)
993
993
  * on failure
994
- * [has a reason Error object when there is an error on the connection](./spec/acceptance/realtime/connection_spec.rb#L1852)
994
+ * [has a reason Error object when there is an error on the connection](./spec/acceptance/realtime/connection_spec.rb#L1851)
995
995
  * retry_in
996
- * [is nil when a retry is not required](./spec/acceptance/realtime/connection_spec.rb#L1867)
997
- * FAILED: ~~[is 0 when first attempt to connect fails](./spec/acceptance/realtime/connection_spec.rb#L1874)~~
998
- * [is 0 when an immediate reconnect will occur](./spec/acceptance/realtime/connection_spec.rb#L1884)
999
- * [contains the next retry period when an immediate reconnect will not occur](./spec/acceptance/realtime/connection_spec.rb#L1894)
996
+ * [is nil when a retry is not required](./spec/acceptance/realtime/connection_spec.rb#L1866)
997
+ * [is 0 when first attempt to connect fails](./spec/acceptance/realtime/connection_spec.rb#L1873)
998
+ * [is 0 when an immediate reconnect will occur](./spec/acceptance/realtime/connection_spec.rb#L1883)
999
+ * [contains the next retry period when an immediate reconnect will not occur](./spec/acceptance/realtime/connection_spec.rb#L1893)
1000
1000
  * whilst CONNECTED
1001
1001
  * when a CONNECTED message is received (#RTN24)
1002
- * [emits an UPDATE event](./spec/acceptance/realtime/connection_spec.rb#L1928)
1003
- * [updates the ConnectionDetail and Connection attributes (#RTC8a1)](./spec/acceptance/realtime/connection_spec.rb#L1943)
1002
+ * [emits an UPDATE event](./spec/acceptance/realtime/connection_spec.rb#L1927)
1003
+ * [updates the ConnectionDetail and Connection attributes (#RTC8a1)](./spec/acceptance/realtime/connection_spec.rb#L1942)
1004
1004
  * when a CONNECTED message with an error is received
1005
- * [emits an UPDATE event](./spec/acceptance/realtime/connection_spec.rb#L1976)
1005
+ * [emits an UPDATE event](./spec/acceptance/realtime/connection_spec.rb#L1975)
1006
1006
  * version params
1007
- * [sends the protocol version param v (#G4, #RTN2f)](./spec/acceptance/realtime/connection_spec.rb#L1997)
1008
- * [sends the lib version param agent (#RCS7d)](./spec/acceptance/realtime/connection_spec.rb#L2006)
1007
+ * [sends the protocol version param v (#G4, #RTN2f)](./spec/acceptance/realtime/connection_spec.rb#L1996)
1008
+ * [sends the lib version param agent (#RCS7d)](./spec/acceptance/realtime/connection_spec.rb#L2005)
1009
1009
  * transport_params (#RTC1f)
1010
- * [pases transport_params to query](./spec/acceptance/realtime/connection_spec.rb#L2019)
1010
+ * [pases transport_params to query](./spec/acceptance/realtime/connection_spec.rb#L2018)
1011
1011
  * when changing default param
1012
- * [overrides default param (#RTC1f1)](./spec/acceptance/realtime/connection_spec.rb#L2032)
1012
+ * [overrides default param (#RTC1f1)](./spec/acceptance/realtime/connection_spec.rb#L2031)
1013
1013
 
1014
1014
  ### Ably::Realtime::Channel Message
1015
1015
  _(see [spec/acceptance/realtime/message_spec.rb](./spec/acceptance/realtime/message_spec.rb))_
@@ -3100,7 +3100,7 @@ _(see [spec/acceptance/rest/presence_spec.rb](./spec/acceptance/rest/presence_sp
3100
3100
  * default :limit
3101
3101
  * [defaults to a limit of 100](./spec/acceptance/rest/presence_spec.rb#L86)
3102
3102
  * with :client_id option
3103
- * [returns a list members filtered by the provided client ID](./spec/acceptance/rest/presence_spec.rb#L95)
3103
+ * FAILED: ~~[returns a list members filtered by the provided client ID](./spec/acceptance/rest/presence_spec.rb#L95)~~
3104
3104
  * with :connection_id option
3105
3105
  * [returns a list members filtered by the provided connection ID](./spec/acceptance/rest/presence_spec.rb#L106)
3106
3106
  * [returns a list members filtered by the provided connection ID](./spec/acceptance/rest/presence_spec.rb#L110)
@@ -5075,6 +5075,6 @@ _(see [spec/unit/util/pub_sub_spec.rb](./spec/unit/util/pub_sub_spec.rb))_
5075
5075
 
5076
5076
  ## Test summary
5077
5077
 
5078
- * Passing tests: 2491
5079
- * Pending tests: 7
5080
- * Failing tests: 2
5078
+ * Passing tests: 2494
5079
+ * Pending tests: 5
5080
+ * Failing tests: 1
@@ -249,7 +249,6 @@ module Ably::Models
249
249
  # Return a JSON ready object from the underlying #attributes using Ably naming conventions for keys
250
250
  def as_json(*args)
251
251
  raise TypeError, ':action is missing, cannot generate a valid Hash for ProtocolMessage' unless action
252
- raise TypeError, ':msg_serial is missing, cannot generate a valid Hash for ProtocolMessage' if ack_required? && !has_message_serial?
253
252
 
254
253
  attributes.dup.tap do |hash_object|
255
254
  hash_object['action'] = action.to_i
data/lib/ably/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Ably
2
- VERSION = '1.2.6'
2
+ VERSION = '1.2.7'
3
3
  # The level of compatibility with the Ably service that this SDK supports.
4
4
  # Also referred to as the 'wire protocol version'.
5
5
  # spec : CSV2
@@ -617,7 +617,6 @@ describe Ably::Realtime::Auth, :event_machine do
617
617
  deferrable.errback do |error|
618
618
  EventMachine.add_timer(0.2) do
619
619
  expect(connection_failed).to eql(true)
620
- expect(error.message).to match(/invalid.*accessToken/i)
621
620
  expect(error.code).to eql(40005)
622
621
  stop_reactor
623
622
  end
@@ -627,7 +626,6 @@ describe Ably::Realtime::Auth, :event_machine do
627
626
  end
628
627
 
629
628
  client.connection.once(:failed) do
630
- expect(client.connection.error_reason.message).to match(/invalid.*accessToken/i)
631
629
  expect(client.connection.error_reason.code).to eql(40005)
632
630
  connection_failed = true
633
631
  end
@@ -664,7 +662,6 @@ describe Ably::Realtime::Auth, :event_machine do
664
662
  channel.attach do
665
663
  channel.publish('not-allowed').errback do |error|
666
664
  expect(error.code).to eql(40160)
667
- expect(error.message).to match(/permission denied/)
668
665
 
669
666
  client.auth.authorize(nil, auth_callback: upgraded_token_cb)
670
667
  client.connection.once(:update) do
@@ -1058,7 +1055,6 @@ describe Ably::Realtime::Auth, :event_machine do
1058
1055
 
1059
1056
  it 'disconnected includes and invalid signature message' do
1060
1057
  client.connection.once(:disconnected) do |state_change|
1061
- expect(state_change.reason.message.match(/signature verification failed/i)).to_not be_nil
1062
1058
  expect(state_change.reason.code).to eql(40144)
1063
1059
  stop_reactor
1064
1060
  end
@@ -1111,7 +1107,6 @@ describe Ably::Realtime::Auth, :event_machine do
1111
1107
 
1112
1108
  it 'authentication fails and reason for disconnection is invalid signature' do
1113
1109
  client.connection.once(:disconnected) do |state_change|
1114
- expect(state_change.reason.message.match(/signature verification failed/i)).to_not be_nil
1115
1110
  expect(state_change.reason.code).to eql(40144)
1116
1111
  stop_reactor
1117
1112
  end
@@ -1143,7 +1138,6 @@ describe Ably::Realtime::Auth, :event_machine do
1143
1138
 
1144
1139
  it 'fails with an invalid signature error' do
1145
1140
  client.connection.once(:disconnected) do |state_change|
1146
- expect(state_change.reason.message.match(/signature verification failed/i)).to_not be_nil
1147
1141
  expect(state_change.reason.code).to eql(40144)
1148
1142
  stop_reactor
1149
1143
  end
@@ -1248,7 +1242,6 @@ describe Ably::Realtime::Auth, :event_machine do
1248
1242
  allowed_channel = client.channels.get(channel_with_publish_permissions)
1249
1243
  forbidden_channel.publish('not-allowed').errback do |error|
1250
1244
  expect(error.code).to eql(40160)
1251
- expect(error.message).to match(/permission denied/)
1252
1245
 
1253
1246
  allowed_channel.publish(message_name) do |message|
1254
1247
  expect(message.name).to eql(message_name)
@@ -173,7 +173,7 @@ describe 'Ably::Realtime::Channel Message', :event_machine do
173
173
  end
174
174
 
175
175
  context 'JSON Array' do
176
- let(:data) { { 'push' => { 'data' => { 'key' => [ true, false, 55, nil, 'string', { 'Hash' => true }, ['array'] ] } } } }
176
+ let(:data) { { 'push' => { 'data' => { 'key' => [ true, false, 55.1, nil, 'string', { 'Hash' => true }, ['array'] ] } } } }
177
177
 
178
178
  it 'is encoded and decoded to the same Array' do
179
179
  publish_and_check_extras data
@@ -397,14 +397,6 @@ describe Ably::Models::ProtocolMessage do
397
397
  end
398
398
  end
399
399
 
400
- context 'with missing msg_serial for ack message' do
401
- let(:model) { new_protocol_message({ :action => message_action }) }
402
-
403
- it 'it raises an exception' do
404
- expect { model.to_json }.to raise_error TypeError, /msg_serial.*missing/
405
- end
406
- end
407
-
408
400
  context 'is aliased by #to_s' do
409
401
  let(:model) { new_protocol_message({ :action => attached_action, :channelSerial => 'unique', messages: [message1, message2, message3], :timestamp => as_since_epoch(Time.now) }) }
410
402
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ably
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.6
4
+ version: 1.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lewis Marshall
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2024-07-08 00:00:00.000000000 Z
12
+ date: 2024-09-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: eventmachine
@@ -607,7 +607,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
607
607
  - !ruby/object:Gem::Version
608
608
  version: '0'
609
609
  requirements: []
610
- rubygems_version: 3.5.4
610
+ rubygems_version: 3.3.7
611
611
  signing_key:
612
612
  specification_version: 4
613
613
  summary: A Ruby client library for ably.io realtime messaging implemented using EventMachine