ably-rest 0.7.3 → 0.7.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. checksums.yaml +8 -8
  2. data/.travis.yml +1 -0
  3. data/SPEC.md +480 -472
  4. data/lib/ably-rest.rb +1 -1
  5. data/lib/submodules/ably-ruby/LICENSE.txt +1 -1
  6. data/lib/submodules/ably-ruby/README.md +107 -24
  7. data/lib/submodules/ably-ruby/SPEC.md +531 -398
  8. data/lib/submodules/ably-ruby/lib/ably/auth.rb +24 -16
  9. data/lib/submodules/ably-ruby/lib/ably/exceptions.rb +9 -0
  10. data/lib/submodules/ably-ruby/lib/ably/models/message.rb +17 -9
  11. data/lib/submodules/ably-ruby/lib/ably/models/paginated_resource.rb +12 -8
  12. data/lib/submodules/ably-ruby/lib/ably/models/presence_message.rb +18 -10
  13. data/lib/submodules/ably-ruby/lib/ably/models/protocol_message.rb +15 -4
  14. data/lib/submodules/ably-ruby/lib/ably/modules/async_wrapper.rb +4 -3
  15. data/lib/submodules/ably-ruby/lib/ably/modules/event_emitter.rb +31 -2
  16. data/lib/submodules/ably-ruby/lib/ably/modules/message_emitter.rb +77 -0
  17. data/lib/submodules/ably-ruby/lib/ably/modules/safe_deferrable.rb +71 -0
  18. data/lib/submodules/ably-ruby/lib/ably/modules/safe_yield.rb +41 -0
  19. data/lib/submodules/ably-ruby/lib/ably/modules/state_emitter.rb +28 -8
  20. data/lib/submodules/ably-ruby/lib/ably/realtime.rb +0 -5
  21. data/lib/submodules/ably-ruby/lib/ably/realtime/channel.rb +24 -29
  22. data/lib/submodules/ably-ruby/lib/ably/realtime/channel/channel_manager.rb +54 -11
  23. data/lib/submodules/ably-ruby/lib/ably/realtime/channel/channel_state_machine.rb +21 -6
  24. data/lib/submodules/ably-ruby/lib/ably/realtime/client.rb +7 -2
  25. data/lib/submodules/ably-ruby/lib/ably/realtime/client/incoming_message_dispatcher.rb +29 -26
  26. data/lib/submodules/ably-ruby/lib/ably/realtime/client/outgoing_message_dispatcher.rb +4 -4
  27. data/lib/submodules/ably-ruby/lib/ably/realtime/connection.rb +41 -9
  28. data/lib/submodules/ably-ruby/lib/ably/realtime/connection/connection_manager.rb +72 -24
  29. data/lib/submodules/ably-ruby/lib/ably/realtime/connection/connection_state_machine.rb +26 -4
  30. data/lib/submodules/ably-ruby/lib/ably/realtime/connection/websocket_transport.rb +19 -6
  31. data/lib/submodules/ably-ruby/lib/ably/realtime/presence.rb +74 -208
  32. data/lib/submodules/ably-ruby/lib/ably/realtime/presence/members_map.rb +264 -0
  33. data/lib/submodules/ably-ruby/lib/ably/realtime/presence/presence_manager.rb +59 -0
  34. data/lib/submodules/ably-ruby/lib/ably/realtime/presence/presence_state_machine.rb +64 -0
  35. data/lib/submodules/ably-ruby/lib/ably/rest/channel.rb +1 -1
  36. data/lib/submodules/ably-ruby/lib/ably/rest/client.rb +6 -2
  37. data/lib/submodules/ably-ruby/lib/ably/rest/presence.rb +1 -1
  38. data/lib/submodules/ably-ruby/lib/ably/util/pub_sub.rb +3 -1
  39. data/lib/submodules/ably-ruby/lib/ably/util/safe_deferrable.rb +18 -0
  40. data/lib/submodules/ably-ruby/lib/ably/version.rb +1 -1
  41. data/lib/submodules/ably-ruby/spec/acceptance/realtime/channel_history_spec.rb +2 -2
  42. data/lib/submodules/ably-ruby/spec/acceptance/realtime/channel_spec.rb +28 -6
  43. data/lib/submodules/ably-ruby/spec/acceptance/realtime/connection_failures_spec.rb +116 -46
  44. data/lib/submodules/ably-ruby/spec/acceptance/realtime/connection_spec.rb +55 -10
  45. data/lib/submodules/ably-ruby/spec/acceptance/realtime/message_spec.rb +32 -0
  46. data/lib/submodules/ably-ruby/spec/acceptance/realtime/presence_spec.rb +456 -96
  47. data/lib/submodules/ably-ruby/spec/acceptance/realtime/stats_spec.rb +2 -2
  48. data/lib/submodules/ably-ruby/spec/acceptance/realtime/time_spec.rb +2 -2
  49. data/lib/submodules/ably-ruby/spec/acceptance/rest/auth_spec.rb +96 -7
  50. data/lib/submodules/ably-ruby/spec/shared/client_initializer_behaviour.rb +8 -0
  51. data/lib/submodules/ably-ruby/spec/shared/safe_deferrable_behaviour.rb +71 -0
  52. data/lib/submodules/ably-ruby/spec/support/api_helper.rb +1 -1
  53. data/lib/submodules/ably-ruby/spec/support/event_machine_helper.rb +1 -1
  54. data/lib/submodules/ably-ruby/spec/support/test_app.rb +13 -7
  55. data/lib/submodules/ably-ruby/spec/unit/models/message_spec.rb +15 -14
  56. data/lib/submodules/ably-ruby/spec/unit/models/paginated_resource_spec.rb +4 -4
  57. data/lib/submodules/ably-ruby/spec/unit/models/presence_message_spec.rb +17 -17
  58. data/lib/submodules/ably-ruby/spec/unit/models/stat_spec.rb +4 -4
  59. data/lib/submodules/ably-ruby/spec/unit/modules/async_wrapper_spec.rb +28 -9
  60. data/lib/submodules/ably-ruby/spec/unit/modules/event_emitter_spec.rb +50 -0
  61. data/lib/submodules/ably-ruby/spec/unit/modules/state_emitter_spec.rb +76 -2
  62. data/lib/submodules/ably-ruby/spec/unit/realtime/channel_spec.rb +51 -20
  63. data/lib/submodules/ably-ruby/spec/unit/realtime/channels_spec.rb +3 -3
  64. data/lib/submodules/ably-ruby/spec/unit/realtime/connection_spec.rb +30 -0
  65. data/lib/submodules/ably-ruby/spec/unit/realtime/presence_spec.rb +52 -26
  66. data/lib/submodules/ably-ruby/spec/unit/realtime/safe_deferrable_spec.rb +12 -0
  67. data/spec/spec_helper.rb +5 -0
  68. metadata +12 -4
  69. data/lib/submodules/ably-ruby/.ruby-version.old +0 -1
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZmFlZmVjODUzYjUxMzVjNmM3OWRlN2Y5YzAzY2ExNGZlZjFkNDYzYQ==
4
+ MzJmOTJkOTc1OWMyMWNlM2U3NjIzMmNiNWY5ZTI3MGI0YTFlNzZhZA==
5
5
  data.tar.gz: !binary |-
6
- MDllZThmYmRkYjE3MmQ4NzNlYjE0YjZhNWQ4ZWVkZWRiMTkzNmQ3Nw==
6
+ ZTUyMTI1MGJjNTRkMjQ0NGI0OTg0MDJiZGJiNTYyZGEyZjZjZTc3MA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YmRkMTMxNjZlYThhYmY1YzAyNzc5ZjRlNDE3MDk3ZmEzMjI3MmQzMTJlMWM2
10
- YzdmOWE0MzY2YWZjY2ZiZDMzNDQxMDQ3M2VlNTJjMWJjOGZhNWEyNGYwNTdj
11
- YjEyNWEwNWFmZWUyMDU3ZTcwZDE0MGYzYTNkNGY4MTg1Y2ViMzA=
9
+ OWZkNjgwYTBkNTIwODA3OTQyN2Q0ODU5YTFhOGY3MDUzNmRjYmZhYjhlYTk4
10
+ NDFiMTkwMDljNzBiZWM1ZTQ1MmYyMTM4NTZhZDYzZTJmNGNkOGM4OWNlNjNk
11
+ ZjQ0ZjYxYWI3OTM5ODFhYjU2M2YxNDViMTJmY2RkMTZhZTZmMGI=
12
12
  data.tar.gz: !binary |-
13
- ZDk1ZWFhMTFiNTE4MzE5ZjAyYzllOGE3MDUwOGRhNGEyNDBmYzA2OTgyODY2
14
- YmU4ZjM0Y2MzOWMyZmVmMjlkNWJkNGVjNGQ1OGQ0Y2ViNDRkZDEzYzhlY2I3
15
- MWJkN2M5NGM2YjQ4N2I1NDg3YmZhOGFkYzUxYzQ1YjcwYWFiMjc=
13
+ NTk4NmZjM2VkYWNlZmZjYWU2MDMwMjNiNGJmMzY3YzJmY2E0MDQwNjU1NDhh
14
+ ZDE3YTMyODg1ZDEwZGUzNGExYmUyMjQ2MjFhNTlhODU5ODViNzA2MDFlNmFh
15
+ MWRiNDMzYjkwYWUyZTY1MDM1NTk3ZGJkY2QyYTdjMzNjNzI4MjY=
@@ -1,3 +1,4 @@
1
+ env: RSPEC_RETRY=true
1
2
  language: ruby
2
3
  rvm:
3
4
  - 1.9.3
data/SPEC.md CHANGED
@@ -1,934 +1,942 @@
1
- # Ably REST Client Library 0.7.1 Specification
1
+ # Ably REST Client Library 0.7.4 Specification
2
2
 
3
3
  ### Ably::Auth
4
- _(see [lib/submodules/ably-ruby/spec/acceptance/rest/auth_spec.rb](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb))_
4
+ _(see [lib/submodules/ably-ruby/spec/acceptance/rest/auth_spec.rb](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb))_
5
5
  * using JSON and MsgPack protocol
6
- * [has immutable options](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L54)
6
+ * [has immutable options](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L54)
7
7
  * #request_token
8
- * [returns the requested token](https://github.com/ably/ably-ruby/tree/fa00e7d8516d7da32ca44f46a0bde21057ea422a/spec/acceptance/rest/auth_spec.rb#L62)
8
+ * [returns a valid requested token in the expected format with valid issued_at and expires_at attributes](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L69)
9
9
  * with option :client_id
10
- * [overrides default and uses camelCase notation for all attributes](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L95)
10
+ * [overrides default and uses camelCase notation for all attributes](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L95)
11
11
  * with option :capability
12
- * [overrides default and uses camelCase notation for all attributes](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L95)
12
+ * [overrides default and uses camelCase notation for all attributes](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L95)
13
13
  * with option :nonce
14
- * [overrides default and uses camelCase notation for all attributes](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L95)
14
+ * [overrides default and uses camelCase notation for all attributes](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L95)
15
15
  * with option :timestamp
16
- * [overrides default and uses camelCase notation for all attributes](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L95)
16
+ * [overrides default and uses camelCase notation for all attributes](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L95)
17
17
  * with option :ttl
18
- * [overrides default and uses camelCase notation for all attributes](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L95)
18
+ * [overrides default and uses camelCase notation for all attributes](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L95)
19
19
  * with :key_id & :key_secret options
20
- * [key_id is used in request and signing uses key_secret](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L124)
20
+ * [key_id is used in request and signing uses key_secret](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L124)
21
21
  * with :query_time option
22
- * [queries the server for the time](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L132)
22
+ * [queries the server for the time](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L132)
23
23
  * without :query_time option
24
- * [does not query the server for the time](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L141)
24
+ * [does not query the server for the time](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L141)
25
25
  * with :auth_url option
26
- * when response is valid
27
- * [requests a token from :auth_url using an HTTP GET request](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L188)
26
+ * when response from :auth_url is a valid token request
27
+ * [requests a token from :auth_url using an HTTP GET request](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L188)
28
+ * [returns a valid token generated from the token request](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L193)
28
29
  * with :query_params
29
- * [requests a token from :auth_url with the :query_params](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L196)
30
+ * [requests a token from :auth_url with the :query_params](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L200)
30
31
  * with :headers
31
- * [requests a token from :auth_url with the HTTP headers set](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L204)
32
+ * [requests a token from :auth_url with the HTTP headers set](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L208)
32
33
  * with POST
33
- * [requests a token from :auth_url using an HTTP POST instead of the default GET](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L212)
34
+ * [requests a token from :auth_url using an HTTP POST instead of the default GET](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L216)
35
+ * when response from :auth_url is a token
36
+ * [returns a Token created from the token JSON](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L240)
34
37
  * when response is invalid
35
38
  * 500
36
- * [raises ServerError](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L225)
39
+ * [raises ServerError](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L255)
37
40
  * XML
38
- * [raises InvalidResponseBody](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L236)
39
- * with token_request_block
40
- * [calls the block when authenticating to obtain the request token](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L254)
41
- * [uses the token request from the block when requesting a new token](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L259)
41
+ * [raises InvalidResponseBody](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L266)
42
+ * with token_request_block that returns a token request
43
+ * [calls the block when authenticating to obtain the request token](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L284)
44
+ * [uses the token request from the block when requesting a new token](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L289)
45
+ * with token_request_block that returns a token
46
+ * [calls the block when authenticating to obtain the request token](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L317)
47
+ * [uses the token request from the block when requesting a new token](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L322)
42
48
  * before #authorise has been called
43
- * [has no current_token](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L266)
49
+ * [has no current_token](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L334)
44
50
  * #authorise
45
- * [updates the persisted auth options thare are then used for subsequent authorise requests](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L313)
51
+ * [updates the persisted auth options thare are then used for subsequent authorise requests](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L381)
46
52
  * when called for the first time since the client has been instantiated
47
- * [passes all options to #request_token](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L277)
48
- * [returns a valid token](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L282)
49
- * [issues a new token if option :force => true](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L286)
53
+ * [passes all options to #request_token](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L345)
54
+ * [returns a valid token](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L350)
55
+ * [issues a new token if option :force => true](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L354)
50
56
  * with previous authorisation
51
- * [does not request a token if current_token has not expired](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L297)
52
- * [requests a new token if token is expired](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L302)
53
- * [issues a new token if option :force => true](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L308)
57
+ * [does not request a token if current_token has not expired](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L365)
58
+ * [requests a new token if token is expired](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L370)
59
+ * [issues a new token if option :force => true](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L376)
54
60
  * with token_request_block
55
- * [calls the block](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L329)
56
- * [uses the token request returned from the block when requesting a new token](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L333)
61
+ * [calls the block](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L397)
62
+ * [uses the token request returned from the block when requesting a new token](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L401)
57
63
  * for every subsequent #request_token
58
64
  * without a provided block
59
- * [calls the originally provided block](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L339)
65
+ * [calls the originally provided block](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L407)
60
66
  * with a provided block
61
- * [does not call the originally provided block and calls the new #request_token block](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L346)
67
+ * [does not call the originally provided block and calls the new #request_token block](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L414)
62
68
  * #create_token_request
63
- * [uses the key ID from the client](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L362)
64
- * [uses the default TTL](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L366)
65
- * [uses the default capability](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L370)
69
+ * [uses the key ID from the client](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L430)
70
+ * [uses the default TTL](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L434)
71
+ * [uses the default capability](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L438)
66
72
  * the nonce
67
- * [is unique for every request](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L375)
68
- * [is at least 16 characters](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L380)
73
+ * [is unique for every request](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L443)
74
+ * [is at least 16 characters](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L448)
69
75
  * with option :ttl
70
- * [overrides default](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L391)
76
+ * [overrides default](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L459)
71
77
  * with option :capability
72
- * [overrides default](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L391)
78
+ * [overrides default](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L459)
73
79
  * with option :nonce
74
- * [overrides default](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L391)
80
+ * [overrides default](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L459)
75
81
  * with option :timestamp
76
- * [overrides default](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L391)
82
+ * [overrides default](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L459)
77
83
  * with option :client_id
78
- * [overrides default](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L391)
84
+ * [overrides default](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L459)
79
85
  * with additional invalid attributes
80
- * [are ignored](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L399)
86
+ * [are ignored](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L467)
81
87
  * when required fields are missing
82
- * [should raise an exception if key secret is missing](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L410)
83
- * [should raise an exception if key id is missing](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L414)
88
+ * [should raise an exception if key secret is missing](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L478)
89
+ * [should raise an exception if key id is missing](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L482)
84
90
  * with :query_time option
85
- * [queries the server for the timestamp](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L423)
91
+ * [queries the server for the timestamp](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L491)
86
92
  * with :timestamp option
87
- * [uses the provided timestamp in the token request](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L433)
93
+ * [uses the provided timestamp in the token request](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L501)
88
94
  * signing
89
- * [generates a valid HMAC](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L450)
95
+ * [generates a valid HMAC](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L518)
90
96
  * using token authentication
91
97
  * with :token_id option
92
- * [authenticates successfully using the provided :token_id](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L473)
93
- * [disallows publishing on unspecified capability channels](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L477)
94
- * [fails if timestamp is invalid](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L485)
95
- * [cannot be renewed automatically](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L493)
98
+ * [authenticates successfully using the provided :token_id](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L541)
99
+ * [disallows publishing on unspecified capability channels](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L545)
100
+ * [fails if timestamp is invalid](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L553)
101
+ * [cannot be renewed automatically](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L561)
96
102
  * when implicit as a result of using :client id
97
103
  * and requests to the Ably server are mocked
98
- * [will send a token request to the server](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L523)
104
+ * [will send a token request to the server](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L591)
99
105
  * a token is created
100
- * [before a request is made](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L532)
101
- * [when a message is published](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L536)
102
- * [with capability and TTL defaults](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L540)
106
+ * [before a request is made](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L600)
107
+ * [when a message is published](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L604)
108
+ * [with capability and TTL defaults](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L608)
103
109
  * when using an :api_key and basic auth
104
- * [#using_token_auth? is false](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L555)
105
- * [#using_basic_auth? is true](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/auth_spec.rb#L559)
110
+ * [#using_token_auth? is false](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L623)
111
+ * [#using_basic_auth? is true](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/auth_spec.rb#L627)
106
112
 
107
113
  ### Ably::Rest
108
- _(see [lib/submodules/ably-ruby/spec/acceptance/rest/base_spec.rb](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/base_spec.rb))_
114
+ _(see [lib/submodules/ably-ruby/spec/acceptance/rest/base_spec.rb](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/base_spec.rb))_
109
115
  * transport protocol
110
116
  * when protocol is not defined it defaults to :msgpack
111
- * [uses MsgPack](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/base_spec.rb#L27)
117
+ * [uses MsgPack](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/base_spec.rb#L27)
112
118
  * when option {:protocol=>:json} is used
113
- * [uses JSON](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/base_spec.rb#L43)
119
+ * [uses JSON](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/base_spec.rb#L43)
114
120
  * when option {:use_binary_protocol=>false} is used
115
- * [uses JSON](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/base_spec.rb#L43)
121
+ * [uses JSON](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/base_spec.rb#L43)
116
122
  * when option {:protocol=>:msgpack} is used
117
- * [uses MsgPack](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/base_spec.rb#L60)
123
+ * [uses MsgPack](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/base_spec.rb#L60)
118
124
  * when option {:use_binary_protocol=>true} is used
119
- * [uses MsgPack](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/base_spec.rb#L60)
125
+ * [uses MsgPack](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/base_spec.rb#L60)
120
126
  * using JSON and MsgPack protocol
121
127
  * failed requests
122
128
  * due to invalid Auth
123
- * [should raise an InvalidRequest exception with a valid error message and code](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/base_spec.rb#L75)
129
+ * [should raise an InvalidRequest exception with a valid error message and code](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/base_spec.rb#L75)
124
130
  * server error with JSON error response body
125
- * [should raise a ServerError exception](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/base_spec.rb#L94)
131
+ * [should raise a ServerError exception](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/base_spec.rb#L94)
126
132
  * 500 server error without a valid JSON response body
127
- * [should raise a ServerError exception](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/base_spec.rb#L105)
133
+ * [should raise a ServerError exception](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/base_spec.rb#L105)
128
134
  * token authentication failures
129
135
  * when auth#token_renewable?
130
- * [should automatically reissue a token](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/base_spec.rb#L143)
136
+ * [should automatically reissue a token](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/base_spec.rb#L143)
131
137
  * when NOT auth#token_renewable?
132
- * [should raise an InvalidToken exception](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/base_spec.rb#L156)
138
+ * [should raise an InvalidToken exception](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/base_spec.rb#L156)
133
139
 
134
140
  ### Ably::Rest::Channel
135
- _(see [lib/submodules/ably-ruby/spec/acceptance/rest/channel_spec.rb](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/channel_spec.rb))_
141
+ _(see [lib/submodules/ably-ruby/spec/acceptance/rest/channel_spec.rb](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/channel_spec.rb))_
136
142
  * using JSON and MsgPack protocol
137
143
  * #publish
138
- * [should publish the message adn return true indicating success](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/channel_spec.rb#L17)
144
+ * [should publish the message adn return true indicating success](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/channel_spec.rb#L17)
139
145
  * #history
140
- * [should return the current message history for the channel](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/channel_spec.rb#L39)
141
- * [should return paged history using the PaginatedResource model](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/channel_spec.rb#L67)
146
+ * [should return the current message history for the channel](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/channel_spec.rb#L39)
147
+ * [should return paged history using the PaginatedResource model](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/channel_spec.rb#L67)
142
148
  * message timestamps
143
- * [should all be after the messages were published](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/channel_spec.rb#L52)
149
+ * [should all be after the messages were published](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/channel_spec.rb#L52)
144
150
  * message IDs
145
- * [should be unique](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/channel_spec.rb#L60)
151
+ * [should be unique](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/channel_spec.rb#L60)
146
152
  * #history option
147
153
  * :start
148
154
  * with milliseconds since epoch value
149
- * [uses this value in the history request](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/channel_spec.rb#L116)
155
+ * [uses this value in the history request](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/channel_spec.rb#L116)
150
156
  * with a Time object value
151
- * [converts the value to milliseconds since epoch in the hisotry request](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/channel_spec.rb#L126)
157
+ * [converts the value to milliseconds since epoch in the hisotry request](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/channel_spec.rb#L126)
152
158
  * :end
153
159
  * with milliseconds since epoch value
154
- * [uses this value in the history request](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/channel_spec.rb#L116)
160
+ * [uses this value in the history request](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/channel_spec.rb#L116)
155
161
  * with a Time object value
156
- * [converts the value to milliseconds since epoch in the hisotry request](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/channel_spec.rb#L126)
162
+ * [converts the value to milliseconds since epoch in the hisotry request](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/channel_spec.rb#L126)
157
163
 
158
164
  ### Ably::Rest::Channels
159
- _(see [lib/submodules/ably-ruby/spec/acceptance/rest/channels_spec.rb](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/channels_spec.rb))_
165
+ _(see [lib/submodules/ably-ruby/spec/acceptance/rest/channels_spec.rb](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/channels_spec.rb))_
160
166
  * using JSON and MsgPack protocol
161
167
  * using shortcut method #channel on the client object
162
168
  * behaves like a channel
163
- * [returns a channel object](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/channels_spec.rb#L6)
164
- * [returns channel object and passes the provided options](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/channels_spec.rb#L11)
169
+ * [returns a channel object](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/channels_spec.rb#L6)
170
+ * [returns channel object and passes the provided options](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/channels_spec.rb#L11)
165
171
  * using #get method on client#channels
166
172
  * behaves like a channel
167
- * [returns a channel object](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/channels_spec.rb#L6)
168
- * [returns channel object and passes the provided options](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/channels_spec.rb#L11)
173
+ * [returns a channel object](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/channels_spec.rb#L6)
174
+ * [returns channel object and passes the provided options](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/channels_spec.rb#L11)
169
175
  * using undocumented array accessor [] method on client#channels
170
176
  * behaves like a channel
171
- * [returns a channel object](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/channels_spec.rb#L6)
172
- * [returns channel object and passes the provided options](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/channels_spec.rb#L11)
177
+ * [returns a channel object](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/channels_spec.rb#L6)
178
+ * [returns channel object and passes the provided options](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/channels_spec.rb#L11)
173
179
 
174
180
  ### Ably::Rest::Client
175
- _(see [lib/submodules/ably-ruby/spec/acceptance/rest/client_spec.rb](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/client_spec.rb))_
181
+ _(see [lib/submodules/ably-ruby/spec/acceptance/rest/client_spec.rb](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/client_spec.rb))_
176
182
  * using JSON and MsgPack protocol
177
183
  * #initialize
178
184
  * with an auth block
179
- * [calls the block to get a new token](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/client_spec.rb#L20)
185
+ * [calls the block to get a new token](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/client_spec.rb#L20)
180
186
  * with an auth URL
181
- * [sends an HTTP request to the provided URL to get a new token](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/client_spec.rb#L34)
187
+ * [sends an HTTP request to the provided URL to get a new token](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/client_spec.rb#L34)
182
188
  * using tokens
183
189
  * when expired
184
- * [creates a new token automatically when the old token expires](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/client_spec.rb#L55)
190
+ * [creates a new token automatically when the old token expires](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/client_spec.rb#L55)
185
191
  * when token has not expired
186
- * [reuses the existing token for every request](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/client_spec.rb#L69)
192
+ * [reuses the existing token for every request](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/client_spec.rb#L69)
187
193
  * connection transport
188
194
  * for default host
189
- * [is configured to timeout connection opening in 4 seconds](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/client_spec.rb#L85)
190
- * [is configured to timeout connection requests in 15 seconds](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/client_spec.rb#L89)
195
+ * [is configured to timeout connection opening in 4 seconds](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/client_spec.rb#L85)
196
+ * [is configured to timeout connection requests in 15 seconds](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/client_spec.rb#L89)
191
197
  * for the fallback hosts
192
- * [is configured to timeout connection opening in 4 seconds](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/client_spec.rb#L95)
193
- * [is configured to timeout connection requests in 15 seconds](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/client_spec.rb#L99)
198
+ * [is configured to timeout connection opening in 4 seconds](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/client_spec.rb#L95)
199
+ * [is configured to timeout connection requests in 15 seconds](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/client_spec.rb#L99)
194
200
  * fallback hosts
195
201
  * configured
196
- * [should make connection attempts to A.ably-realtime.com, B.ably-realtime.com, C.ably-realtime.com, D.ably-realtime.com, E.ably-realtime.com](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/client_spec.rb#L112)
202
+ * [should make connection attempts to A.ably-realtime.com, B.ably-realtime.com, C.ably-realtime.com, D.ably-realtime.com, E.ably-realtime.com](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/client_spec.rb#L112)
197
203
  * when environment is NOT production
198
- * [does not retry failed requests with fallback hosts when there is a connection error](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/client_spec.rb#L129)
204
+ * [does not retry failed requests with fallback hosts when there is a connection error](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/client_spec.rb#L129)
199
205
  * when environment is production
200
206
  * and connection times out
201
- * [tries fallback hosts 3 times](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/client_spec.rb#L169)
207
+ * [tries fallback hosts 3 times](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/client_spec.rb#L169)
202
208
  * and the total request time exeeds 10 seconds
203
- * [makes no further attempts to any fallback hosts](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/client_spec.rb#L184)
209
+ * [makes no further attempts to any fallback hosts](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/client_spec.rb#L184)
204
210
  * and connection fails
205
- * [tries fallback hosts 3 times](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/client_spec.rb#L200)
211
+ * [tries fallback hosts 3 times](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/client_spec.rb#L200)
206
212
  * with a custom host
207
213
  * that does not exist
208
- * [fails immediately and raises a Faraday Error](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/client_spec.rb#L216)
214
+ * [fails immediately and raises a Faraday Error](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/client_spec.rb#L216)
209
215
  * fallback hosts
210
- * [are never used](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/client_spec.rb#L237)
216
+ * [are never used](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/client_spec.rb#L237)
211
217
  * that times out
212
- * [fails immediately and raises a Faraday Error](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/client_spec.rb#L252)
218
+ * [fails immediately and raises a Faraday Error](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/client_spec.rb#L252)
213
219
  * fallback hosts
214
- * [are never used](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/client_spec.rb#L265)
220
+ * [are never used](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/client_spec.rb#L265)
215
221
 
216
222
  ### Ably::Models::MessageEncoders
217
- _(see [lib/submodules/ably-ruby/spec/acceptance/rest/encoders_spec.rb](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/encoders_spec.rb))_
223
+ _(see [lib/submodules/ably-ruby/spec/acceptance/rest/encoders_spec.rb](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/encoders_spec.rb))_
218
224
  * with binary transport protocol
219
225
  * without encryption
220
226
  * with UTF-8 data
221
- * [does not apply any encoding](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/encoders_spec.rb#L41)
227
+ * [does not apply any encoding](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/encoders_spec.rb#L41)
222
228
  * with binary data
223
- * [does not apply any encoding](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/encoders_spec.rb#L52)
229
+ * [does not apply any encoding](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/encoders_spec.rb#L52)
224
230
  * with JSON data
225
- * [stringifies the JSON and sets the encoding attribute to "json"](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/encoders_spec.rb#L63)
231
+ * [stringifies the JSON and sets the encoding attribute to "json"](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/encoders_spec.rb#L63)
226
232
  * with encryption
227
233
  * with UTF-8 data
228
- * [applies utf-8 and cipher encoding and sets the encoding attribute to "utf-8/cipher+aes-128-cbc"](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/encoders_spec.rb#L78)
234
+ * [applies utf-8 and cipher encoding and sets the encoding attribute to "utf-8/cipher+aes-128-cbc"](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/encoders_spec.rb#L78)
229
235
  * with binary data
230
- * [applies cipher encoding and sets the encoding attribute to "cipher+aes-128-cbc"](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/encoders_spec.rb#L89)
236
+ * [applies cipher encoding and sets the encoding attribute to "cipher+aes-128-cbc"](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/encoders_spec.rb#L89)
231
237
  * with JSON data
232
- * [applies json, utf-8 and cipher encoding and sets the encoding attribute to "json/utf-8/cipher+aes-128-cbc"](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/encoders_spec.rb#L100)
238
+ * [applies json, utf-8 and cipher encoding and sets the encoding attribute to "json/utf-8/cipher+aes-128-cbc"](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/encoders_spec.rb#L100)
233
239
  * with text transport protocol
234
240
  * without encryption
235
241
  * with UTF-8 data
236
- * [does not apply any encoding](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/encoders_spec.rb#L117)
242
+ * [does not apply any encoding](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/encoders_spec.rb#L117)
237
243
  * with binary data
238
- * [applies a base64 encoding and sets the encoding attribute to "base64"](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/encoders_spec.rb#L128)
244
+ * [applies a base64 encoding and sets the encoding attribute to "base64"](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/encoders_spec.rb#L128)
239
245
  * with JSON data
240
- * [stringifies the JSON and sets the encoding attribute to "json"](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/encoders_spec.rb#L139)
246
+ * [stringifies the JSON and sets the encoding attribute to "json"](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/encoders_spec.rb#L139)
241
247
  * with encryption
242
248
  * with UTF-8 data
243
- * [applies utf-8, cipher and base64 encodings and sets the encoding attribute to "utf-8/cipher+aes-128-cbc/base64"](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/encoders_spec.rb#L154)
249
+ * [applies utf-8, cipher and base64 encodings and sets the encoding attribute to "utf-8/cipher+aes-128-cbc/base64"](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/encoders_spec.rb#L154)
244
250
  * with binary data
245
- * [applies cipher and base64 encoding and sets the encoding attribute to "utf-8/cipher+aes-128-cbc/base64"](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/encoders_spec.rb#L165)
251
+ * [applies cipher and base64 encoding and sets the encoding attribute to "utf-8/cipher+aes-128-cbc/base64"](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/encoders_spec.rb#L165)
246
252
  * with JSON data
247
- * [applies json, utf-8, cipher and base64 encoding and sets the encoding attribute to "json/utf-8/cipher+aes-128-cbc/base64"](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/encoders_spec.rb#L176)
253
+ * [applies json, utf-8, cipher and base64 encoding and sets the encoding attribute to "json/utf-8/cipher+aes-128-cbc/base64"](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/encoders_spec.rb#L176)
248
254
 
249
255
  ### Ably::Rest::Channel messages
250
- _(see [lib/submodules/ably-ruby/spec/acceptance/rest/message_spec.rb](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/message_spec.rb))_
256
+ _(see [lib/submodules/ably-ruby/spec/acceptance/rest/message_spec.rb](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/message_spec.rb))_
251
257
  * using JSON and MsgPack protocol
252
258
  * publishing with an ASCII_8BIT message name
253
- * [is converted into UTF_8](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/message_spec.rb#L18)
259
+ * [is converted into UTF_8](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/message_spec.rb#L18)
254
260
  * encryption and encoding
255
261
  * with #publish and #history
256
262
  * with AES-128-CBC using crypto-data-128.json fixtures
257
263
  * item 0 with encrypted encoding utf-8/cipher+aes-128-cbc/base64
258
264
  * behaves like an Ably encrypter and decrypter
259
- * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/message_spec.rb#L65)
260
- * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/message_spec.rb#L80)
265
+ * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/message_spec.rb#L65)
266
+ * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/message_spec.rb#L80)
261
267
  * item 1 with encrypted encoding cipher+aes-128-cbc/base64
262
268
  * behaves like an Ably encrypter and decrypter
263
- * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/message_spec.rb#L65)
264
- * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/message_spec.rb#L80)
269
+ * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/message_spec.rb#L65)
270
+ * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/message_spec.rb#L80)
265
271
  * item 2 with encrypted encoding json/utf-8/cipher+aes-128-cbc/base64
266
272
  * behaves like an Ably encrypter and decrypter
267
- * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/message_spec.rb#L65)
268
- * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/message_spec.rb#L80)
273
+ * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/message_spec.rb#L65)
274
+ * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/message_spec.rb#L80)
269
275
  * item 3 with encrypted encoding json/utf-8/cipher+aes-128-cbc/base64
270
276
  * behaves like an Ably encrypter and decrypter
271
- * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/message_spec.rb#L65)
272
- * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/message_spec.rb#L80)
277
+ * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/message_spec.rb#L65)
278
+ * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/message_spec.rb#L80)
273
279
  * with AES-256-CBC using crypto-data-256.json fixtures
274
280
  * item 0 with encrypted encoding utf-8/cipher+aes-256-cbc/base64
275
281
  * behaves like an Ably encrypter and decrypter
276
- * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/message_spec.rb#L65)
277
- * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/message_spec.rb#L80)
282
+ * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/message_spec.rb#L65)
283
+ * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/message_spec.rb#L80)
278
284
  * item 1 with encrypted encoding cipher+aes-256-cbc/base64
279
285
  * behaves like an Ably encrypter and decrypter
280
- * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/message_spec.rb#L65)
281
- * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/message_spec.rb#L80)
286
+ * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/message_spec.rb#L65)
287
+ * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/message_spec.rb#L80)
282
288
  * item 2 with encrypted encoding json/utf-8/cipher+aes-256-cbc/base64
283
289
  * behaves like an Ably encrypter and decrypter
284
- * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/message_spec.rb#L65)
285
- * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/message_spec.rb#L80)
290
+ * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/message_spec.rb#L65)
291
+ * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/message_spec.rb#L80)
286
292
  * item 3 with encrypted encoding json/utf-8/cipher+aes-256-cbc/base64
287
293
  * behaves like an Ably encrypter and decrypter
288
- * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/message_spec.rb#L65)
289
- * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/message_spec.rb#L80)
294
+ * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/message_spec.rb#L65)
295
+ * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/message_spec.rb#L80)
290
296
  * when publishing lots of messages
291
- * [encrypts on #publish and decrypts on #history](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/message_spec.rb#L113)
297
+ * [encrypts on #publish and decrypts on #history](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/message_spec.rb#L113)
292
298
  * when retrieving #history with a different protocol
293
- * [delivers a String ASCII-8BIT payload to the receiver](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/message_spec.rb#L140)
294
- * [delivers a String UTF-8 payload to the receiver](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/message_spec.rb#L140)
295
- * [delivers a Hash payload to the receiver](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/message_spec.rb#L140)
299
+ * [delivers a String ASCII-8BIT payload to the receiver](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/message_spec.rb#L140)
300
+ * [delivers a String UTF-8 payload to the receiver](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/message_spec.rb#L140)
301
+ * [delivers a Hash payload to the receiver](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/message_spec.rb#L140)
296
302
  * when publishing on an unencrypted channel and retrieving with #history on an encrypted channel
297
- * [does not attempt to decrypt the message](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/message_spec.rb#L156)
303
+ * [does not attempt to decrypt the message](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/message_spec.rb#L156)
298
304
  * when publishing on an encrypted channel and retrieving with #history on an unencrypted channel
299
- * [retrieves the message that remains encrypted with an encrypted encoding attribute](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/message_spec.rb#L177)
300
- * [logs a Cipher exception](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/message_spec.rb#L183)
305
+ * [retrieves the message that remains encrypted with an encrypted encoding attribute](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/message_spec.rb#L177)
306
+ * [logs a Cipher exception](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/message_spec.rb#L183)
301
307
  * publishing on an encrypted channel and retrieving #history with a different algorithm on another client
302
- * [retrieves the message that remains encrypted with an encrypted encoding attribute](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/message_spec.rb#L204)
303
- * [logs a Cipher exception](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/message_spec.rb#L210)
308
+ * [retrieves the message that remains encrypted with an encrypted encoding attribute](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/message_spec.rb#L204)
309
+ * [logs a Cipher exception](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/message_spec.rb#L210)
304
310
  * publishing on an encrypted channel and subscribing with a different key on another client
305
- * [retrieves the message that remains encrypted with an encrypted encoding attribute](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/message_spec.rb#L231)
306
- * [logs a Cipher exception](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/message_spec.rb#L237)
311
+ * [retrieves the message that remains encrypted with an encrypted encoding attribute](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/message_spec.rb#L231)
312
+ * [logs a Cipher exception](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/message_spec.rb#L237)
307
313
 
308
314
  ### Ably::Rest::Presence
309
- _(see [lib/submodules/ably-ruby/spec/acceptance/rest/presence_spec.rb](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/presence_spec.rb))_
315
+ _(see [lib/submodules/ably-ruby/spec/acceptance/rest/presence_spec.rb](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/presence_spec.rb))_
310
316
  * using JSON and MsgPack protocol
311
317
  * tested against presence fixture data set up in test app
312
318
  * #get
313
- * [returns current members on the channel with their action set to :present](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/presence_spec.rb#L30)
319
+ * [returns current members on the channel with their action set to :present](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/presence_spec.rb#L30)
314
320
  * with :limit option
315
- * [returns a paged response limiting number of members per page](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/presence_spec.rb#L44)
321
+ * [returns a paged response limiting number of members per page](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/presence_spec.rb#L44)
316
322
  * #history
317
- * [returns recent presence activity](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/presence_spec.rb#L62)
323
+ * [returns recent presence activity](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/presence_spec.rb#L62)
318
324
  * with options
319
325
  * direction: :forwards
320
- * [returns recent presence activity forwards with most recent history last](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/presence_spec.rb#L78)
326
+ * [returns recent presence activity forwards with most recent history last](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/presence_spec.rb#L78)
321
327
  * direction: :backwards
322
- * [returns recent presence activity backwards with most recent history first](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/presence_spec.rb#L93)
328
+ * [returns recent presence activity backwards with most recent history first](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/presence_spec.rb#L93)
323
329
  * #history
324
330
  * with time range options
325
331
  * :start
326
332
  * with milliseconds since epoch value
327
- * [uses this value in the history request](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/presence_spec.rb#L138)
333
+ * [uses this value in the history request](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/presence_spec.rb#L138)
328
334
  * with Time object value
329
- * [converts the value to milliseconds since epoch in the hisotry request](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/presence_spec.rb#L148)
335
+ * [converts the value to milliseconds since epoch in the hisotry request](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/presence_spec.rb#L148)
330
336
  * :end
331
337
  * with milliseconds since epoch value
332
- * [uses this value in the history request](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/presence_spec.rb#L138)
338
+ * [uses this value in the history request](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/presence_spec.rb#L138)
333
339
  * with Time object value
334
- * [converts the value to milliseconds since epoch in the hisotry request](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/presence_spec.rb#L148)
340
+ * [converts the value to milliseconds since epoch in the hisotry request](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/presence_spec.rb#L148)
335
341
  * decoding
336
342
  * valid decodeable content
337
343
  * #get
338
- * [automaticaly decodes presence messages](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/presence_spec.rb#L206)
344
+ * [automaticaly decodes presence messages](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/presence_spec.rb#L206)
339
345
  * #history
340
- * [automaticaly decodes presence messages](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/presence_spec.rb#L223)
346
+ * [automaticaly decodes presence messages](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/presence_spec.rb#L223)
341
347
  * invalid data
342
348
  * #get
343
- * [returns the messages still encoded](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/presence_spec.rb#L254)
344
- * [logs a cipher error](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/presence_spec.rb#L258)
349
+ * [returns the messages still encoded](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/presence_spec.rb#L254)
350
+ * [logs a cipher error](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/presence_spec.rb#L258)
345
351
  * #history
346
- * [returns the messages still encoded](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/presence_spec.rb#L278)
347
- * [logs a cipher error](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/presence_spec.rb#L282)
352
+ * [returns the messages still encoded](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/presence_spec.rb#L278)
353
+ * [logs a cipher error](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/presence_spec.rb#L282)
348
354
 
349
355
  ### Ably::Rest::Client#stats
350
- _(see [lib/submodules/ably-ruby/spec/acceptance/rest/stats_spec.rb](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/stats_spec.rb))_
356
+ _(see [lib/submodules/ably-ruby/spec/acceptance/rest/stats_spec.rb](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/stats_spec.rb))_
351
357
  * using JSON and MsgPack protocol
352
358
  * fetching application stats
353
359
  * by minute
354
360
  * with :from set to last interval and :limit set to 1
355
- * [retrieves only one stat](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/stats_spec.rb#L50)
356
- * [returns all aggregated message data](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/stats_spec.rb#L54)
357
- * [returns inbound realtime all data](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/stats_spec.rb#L59)
358
- * [returns inbound realtime message data](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/stats_spec.rb#L64)
359
- * [returns outbound realtime all data](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/stats_spec.rb#L69)
360
- * [returns persisted presence all data](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/stats_spec.rb#L74)
361
- * [returns connections all data](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/stats_spec.rb#L79)
362
- * [returns channels all data](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/stats_spec.rb#L84)
363
- * [returns api_requests data](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/stats_spec.rb#L89)
364
- * [returns token_requests data](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/stats_spec.rb#L94)
365
- * [returns stat objects with #interval_granularity equal to :minute](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/stats_spec.rb#L99)
366
- * [returns stat objects with #interval_id matching :start](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/stats_spec.rb#L103)
367
- * [returns stat objects with #interval_time matching :start Time](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/stats_spec.rb#L107)
361
+ * [retrieves only one stat](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/stats_spec.rb#L50)
362
+ * [returns all aggregated message data](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/stats_spec.rb#L54)
363
+ * [returns inbound realtime all data](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/stats_spec.rb#L59)
364
+ * [returns inbound realtime message data](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/stats_spec.rb#L64)
365
+ * [returns outbound realtime all data](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/stats_spec.rb#L69)
366
+ * [returns persisted presence all data](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/stats_spec.rb#L74)
367
+ * [returns connections all data](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/stats_spec.rb#L79)
368
+ * [returns channels all data](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/stats_spec.rb#L84)
369
+ * [returns api_requests data](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/stats_spec.rb#L89)
370
+ * [returns token_requests data](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/stats_spec.rb#L94)
371
+ * [returns stat objects with #interval_granularity equal to :minute](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/stats_spec.rb#L99)
372
+ * [returns stat objects with #interval_id matching :start](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/stats_spec.rb#L103)
373
+ * [returns stat objects with #interval_time matching :start Time](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/stats_spec.rb#L107)
368
374
  * with :start set to first interval, :limit set to 1 and direction :forwards
369
- * [returns the first interval stats as stats are provided forwards from :start](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/stats_spec.rb#L117)
370
- * [returns 3 pages of stats](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/stats_spec.rb#L121)
375
+ * [returns the first interval stats as stats are provided forwards from :start](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/stats_spec.rb#L117)
376
+ * [returns 3 pages of stats](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/stats_spec.rb#L121)
371
377
  * with :end set to last interval, :limit set to 1 and direction :backwards
372
- * [returns the 3rd interval stats first as stats are provided backwards from :end](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/stats_spec.rb#L134)
373
- * [returns 3 pages of stats](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/stats_spec.rb#L138)
378
+ * [returns the 3rd interval stats first as stats are provided backwards from :end](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/stats_spec.rb#L134)
379
+ * [returns 3 pages of stats](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/stats_spec.rb#L138)
374
380
  * by hour
375
- * [should aggregate the stats for that period](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/stats_spec.rb#L162)
381
+ * [should aggregate the stats for that period](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/stats_spec.rb#L162)
376
382
  * by day
377
- * [should aggregate the stats for that period](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/stats_spec.rb#L162)
383
+ * [should aggregate the stats for that period](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/stats_spec.rb#L162)
378
384
  * by month
379
- * [should aggregate the stats for that period](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/stats_spec.rb#L162)
385
+ * [should aggregate the stats for that period](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/stats_spec.rb#L162)
380
386
 
381
387
  ### Ably::Rest::Client#time
382
- _(see [lib/submodules/ably-ruby/spec/acceptance/rest/time_spec.rb](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/time_spec.rb))_
388
+ _(see [lib/submodules/ably-ruby/spec/acceptance/rest/time_spec.rb](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/time_spec.rb))_
383
389
  * using JSON and MsgPack protocol
384
390
  * fetching the service time
385
- * [should return the service time as a Time object](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/acceptance/rest/time_spec.rb#L10)
391
+ * [should return the service time as a Time object](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/acceptance/rest/time_spec.rb#L10)
386
392
 
387
393
  ### Ably::Auth
388
- _(see [lib/submodules/ably-ruby/spec/unit/auth_spec.rb](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/auth_spec.rb))_
394
+ _(see [lib/submodules/ably-ruby/spec/unit/auth_spec.rb](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/auth_spec.rb))_
389
395
  * client_id option
390
396
  * with nil value
391
- * [is permitted](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/auth_spec.rb#L19)
397
+ * [is permitted](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/auth_spec.rb#L19)
392
398
  * as UTF_8 string
393
- * [is permitted](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/auth_spec.rb#L27)
394
- * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/auth_spec.rb#L31)
399
+ * [is permitted](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/auth_spec.rb#L27)
400
+ * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/auth_spec.rb#L31)
395
401
  * as SHIFT_JIS string
396
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/auth_spec.rb#L39)
397
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/auth_spec.rb#L43)
402
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/auth_spec.rb#L39)
403
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/auth_spec.rb#L43)
398
404
  * as ASCII_8BIT string
399
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/auth_spec.rb#L51)
400
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/auth_spec.rb#L55)
405
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/auth_spec.rb#L51)
406
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/auth_spec.rb#L55)
401
407
  * as Integer
402
- * [raises an argument error](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/auth_spec.rb#L63)
408
+ * [raises an argument error](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/auth_spec.rb#L63)
403
409
 
404
410
  ### Ably::Logger
405
- _(see [lib/submodules/ably-ruby/spec/unit/logger_spec.rb](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/logger_spec.rb))_
406
- * [uses the language provided Logger by default](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/logger_spec.rb#L15)
411
+ _(see [lib/submodules/ably-ruby/spec/unit/logger_spec.rb](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/logger_spec.rb))_
412
+ * [uses the language provided Logger by default](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/logger_spec.rb#L15)
407
413
  * with a custom Logger
408
414
  * with an invalid interface
409
- * [raises an exception](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/logger_spec.rb#L116)
415
+ * [raises an exception](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/logger_spec.rb#L116)
410
416
  * with a valid interface
411
- * [is used](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/logger_spec.rb#L135)
417
+ * [is used](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/logger_spec.rb#L135)
412
418
 
413
419
  ### Ably::Models::ErrorInfo
414
- _(see [lib/submodules/ably-ruby/spec/unit/models/error_info_spec.rb](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/error_info_spec.rb))_
420
+ _(see [lib/submodules/ably-ruby/spec/unit/models/error_info_spec.rb](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/error_info_spec.rb))_
415
421
  * behaves like a model
416
422
  * attributes
417
423
  * #code
418
- * [retrieves attribute :code](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L15)
424
+ * [retrieves attribute :code](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L15)
419
425
  * #status_code
420
- * [retrieves attribute :status_code](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L15)
426
+ * [retrieves attribute :status_code](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L15)
421
427
  * #message
422
- * [retrieves attribute :message](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L15)
428
+ * [retrieves attribute :message](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L15)
423
429
  * #==
424
- * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L41)
425
- * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L46)
426
- * [is false when class type differs](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L50)
430
+ * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L41)
431
+ * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L46)
432
+ * [is false when class type differs](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L50)
427
433
  * is immutable
428
- * [prevents changes](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L76)
429
- * [dups options](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L80)
434
+ * [prevents changes](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L76)
435
+ * [dups options](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L80)
430
436
  * #status
431
- * [is an alias for #status_code](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/error_info_spec.rb#L13)
437
+ * [is an alias for #status_code](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/error_info_spec.rb#L13)
432
438
 
433
439
  ### Ably::Models::Message
434
- _(see [lib/submodules/ably-ruby/spec/unit/models/message_spec.rb](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb))_
440
+ _(see [lib/submodules/ably-ruby/spec/unit/models/message_spec.rb](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb))_
435
441
  * behaves like a model
436
442
  * attributes
437
443
  * #name
438
- * [retrieves attribute :name](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L15)
444
+ * [retrieves attribute :name](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L15)
439
445
  * #client_id
440
- * [retrieves attribute :client_id](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L15)
446
+ * [retrieves attribute :client_id](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L15)
441
447
  * #data
442
- * [retrieves attribute :data](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L15)
448
+ * [retrieves attribute :data](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L15)
443
449
  * #encoding
444
- * [retrieves attribute :encoding](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L15)
450
+ * [retrieves attribute :encoding](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L15)
445
451
  * #==
446
- * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L41)
447
- * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L46)
448
- * [is false when class type differs](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L50)
452
+ * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L41)
453
+ * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L46)
454
+ * [is false when class type differs](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L50)
449
455
  * is immutable
450
- * [prevents changes](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L76)
451
- * [dups options](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L80)
456
+ * [prevents changes](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L76)
457
+ * [dups options](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L80)
452
458
  * #timestamp
453
- * [retrieves attribute :timestamp as Time object from ProtocolMessage](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb#L21)
459
+ * [retrieves attribute :timestamp as Time object from ProtocolMessage](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb#L22)
454
460
  * #connection_id attribute
455
461
  * when this model has a connectionId attribute
456
462
  * but no protocol message
457
- * [uses the model value](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb#L36)
463
+ * [uses the model value](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb#L37)
458
464
  * with a protocol message with a different connectionId
459
- * [uses the model value](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb#L44)
465
+ * [uses the model value](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb#L45)
460
466
  * when this model has no connectionId attribute
461
467
  * and no protocol message
462
- * [uses the model value](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb#L54)
468
+ * [uses the model value](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb#L55)
463
469
  * with a protocol message with a connectionId
464
- * [uses the model value](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb#L62)
470
+ * [uses the model value](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb#L63)
465
471
  * initialized with
466
472
  * :name
467
473
  * as UTF_8 string
468
- * [is permitted](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb#L89)
469
- * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb#L93)
474
+ * [is permitted](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb#L90)
475
+ * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb#L94)
470
476
  * as SHIFT_JIS string
471
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb#L101)
472
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb#L105)
477
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb#L102)
478
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb#L106)
473
479
  * as ASCII_8BIT string
474
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb#L113)
475
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb#L117)
480
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb#L114)
481
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb#L118)
476
482
  * as Integer
477
- * [raises an argument error](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb#L125)
483
+ * [raises an argument error](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb#L126)
478
484
  * as Nil
479
- * [is permitted](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb#L133)
485
+ * [is permitted](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb#L134)
480
486
  * :client_id
481
487
  * as UTF_8 string
482
- * [is permitted](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb#L89)
483
- * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb#L93)
488
+ * [is permitted](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb#L90)
489
+ * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb#L94)
484
490
  * as SHIFT_JIS string
485
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb#L101)
486
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb#L105)
491
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb#L102)
492
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb#L106)
487
493
  * as ASCII_8BIT string
488
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb#L113)
489
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb#L117)
494
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb#L114)
495
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb#L118)
490
496
  * as Integer
491
- * [raises an argument error](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb#L125)
497
+ * [raises an argument error](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb#L126)
492
498
  * as Nil
493
- * [is permitted](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb#L133)
499
+ * [is permitted](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb#L134)
494
500
  * :encoding
495
501
  * as UTF_8 string
496
- * [is permitted](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb#L89)
497
- * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb#L93)
502
+ * [is permitted](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb#L90)
503
+ * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb#L94)
498
504
  * as SHIFT_JIS string
499
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb#L101)
500
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb#L105)
505
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb#L102)
506
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb#L106)
501
507
  * as ASCII_8BIT string
502
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb#L113)
503
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb#L117)
508
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb#L114)
509
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb#L118)
504
510
  * as Integer
505
- * [raises an argument error](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb#L125)
511
+ * [raises an argument error](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb#L126)
506
512
  * as Nil
507
- * [is permitted](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/message_spec.rb#L133)
513
+ * [is permitted](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/message_spec.rb#L134)
508
514
 
509
515
  ### Ably::Models::PaginatedResource
510
- _(see [lib/submodules/ably-ruby/spec/unit/models/paginated_resource_spec.rb](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/paginated_resource_spec.rb))_
511
- * [returns correct length from body](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/paginated_resource_spec.rb#L30)
512
- * [supports alias methods for length](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/paginated_resource_spec.rb#L34)
513
- * [is Enumerable](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/paginated_resource_spec.rb#L39)
514
- * [is iterable](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/paginated_resource_spec.rb#L43)
515
- * [provides [] accessor method](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/paginated_resource_spec.rb#L61)
516
- * [#first gets the first item in page](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/paginated_resource_spec.rb#L67)
517
- * [#last gets the last item in page](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/paginated_resource_spec.rb#L71)
516
+ _(see [lib/submodules/ably-ruby/spec/unit/models/paginated_resource_spec.rb](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/paginated_resource_spec.rb))_
517
+ * [returns correct length from body](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/paginated_resource_spec.rb#L30)
518
+ * [supports alias methods for length](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/paginated_resource_spec.rb#L34)
519
+ * [is Enumerable](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/paginated_resource_spec.rb#L39)
520
+ * [is iterable](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/paginated_resource_spec.rb#L43)
521
+ * [provides [] accessor method](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/paginated_resource_spec.rb#L61)
522
+ * [#first gets the first item in page](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/paginated_resource_spec.rb#L67)
523
+ * [#last gets the last item in page](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/paginated_resource_spec.rb#L71)
518
524
  * #each
519
- * [returns an enumerator](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/paginated_resource_spec.rb#L48)
520
- * [yields each item](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/paginated_resource_spec.rb#L52)
525
+ * [returns an enumerator](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/paginated_resource_spec.rb#L48)
526
+ * [yields each item](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/paginated_resource_spec.rb#L52)
521
527
  * with non paged http response
522
- * [is the first page](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/paginated_resource_spec.rb#L175)
523
- * [is the last page](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/paginated_resource_spec.rb#L179)
524
- * [does not support pagination](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/paginated_resource_spec.rb#L183)
525
- * [raises an exception when accessing next page](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/paginated_resource_spec.rb#L187)
526
- * [raises an exception when accessing first page](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/paginated_resource_spec.rb#L191)
528
+ * [is the first page](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/paginated_resource_spec.rb#L175)
529
+ * [is the last page](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/paginated_resource_spec.rb#L179)
530
+ * [does not support pagination](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/paginated_resource_spec.rb#L183)
531
+ * [raises an exception when accessing next page](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/paginated_resource_spec.rb#L187)
532
+ * [raises an exception when accessing first page](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/paginated_resource_spec.rb#L191)
527
533
  * with paged http response
528
- * [is the first page](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/paginated_resource_spec.rb#L209)
529
- * [is not the last page](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/paginated_resource_spec.rb#L213)
530
- * [supports pagination](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/paginated_resource_spec.rb#L217)
534
+ * [is the first page](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/paginated_resource_spec.rb#L209)
535
+ * [is not the last page](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/paginated_resource_spec.rb#L213)
536
+ * [supports pagination](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/paginated_resource_spec.rb#L217)
531
537
  * accessing next page
532
- * [returns another PaginatedResource](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/paginated_resource_spec.rb#L245)
533
- * [retrieves the next page of results](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/paginated_resource_spec.rb#L249)
534
- * [is not the first page](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/paginated_resource_spec.rb#L254)
535
- * [is the last page](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/paginated_resource_spec.rb#L258)
536
- * [raises an exception if trying to access the last page when it is the last page](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/paginated_resource_spec.rb#L262)
538
+ * [returns another PaginatedResource](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/paginated_resource_spec.rb#L245)
539
+ * [retrieves the next page of results](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/paginated_resource_spec.rb#L249)
540
+ * [is not the first page](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/paginated_resource_spec.rb#L254)
541
+ * [is the last page](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/paginated_resource_spec.rb#L258)
542
+ * [raises an exception if trying to access the last page when it is the last page](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/paginated_resource_spec.rb#L262)
537
543
  * and then first page
538
- * [returns a PaginatedResource](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/paginated_resource_spec.rb#L273)
539
- * [retrieves the first page of results](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/paginated_resource_spec.rb#L277)
540
- * [is the first page](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/paginated_resource_spec.rb#L281)
544
+ * [returns a PaginatedResource](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/paginated_resource_spec.rb#L273)
545
+ * [retrieves the first page of results](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/paginated_resource_spec.rb#L277)
546
+ * [is the first page](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/paginated_resource_spec.rb#L281)
541
547
 
542
548
  ### Ably::Models::PresenceMessage
543
- _(see [lib/submodules/ably-ruby/spec/unit/models/presence_message_spec.rb](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb))_
549
+ _(see [lib/submodules/ably-ruby/spec/unit/models/presence_message_spec.rb](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb))_
544
550
  * behaves like a model
545
551
  * attributes
546
552
  * #client_id
547
- * [retrieves attribute :client_id](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L15)
553
+ * [retrieves attribute :client_id](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L15)
548
554
  * #data
549
- * [retrieves attribute :data](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L15)
555
+ * [retrieves attribute :data](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L15)
550
556
  * #encoding
551
- * [retrieves attribute :encoding](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L15)
557
+ * [retrieves attribute :encoding](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L15)
552
558
  * #==
553
- * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L41)
554
- * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L46)
555
- * [is false when class type differs](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L50)
559
+ * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L41)
560
+ * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L46)
561
+ * [is false when class type differs](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L50)
556
562
  * is immutable
557
- * [prevents changes](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L76)
558
- * [dups options](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L80)
563
+ * [prevents changes](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L76)
564
+ * [dups options](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L80)
559
565
  * #connection_id attribute
560
566
  * when this model has a connectionId attribute
561
567
  * but no protocol message
562
- * [uses the model value](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L25)
568
+ * [uses the model value](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L25)
563
569
  * with a protocol message with a different connectionId
564
- * [uses the model value](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L33)
570
+ * [uses the model value](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L33)
565
571
  * when this model has no connectionId attribute
566
572
  * and no protocol message
567
- * [uses the model value](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L43)
573
+ * [uses the model value](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L43)
568
574
  * with a protocol message with a connectionId
569
- * [uses the model value](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L51)
575
+ * [uses the model value](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L51)
570
576
  * #member_key attribute
571
- * [is string in format connection_id:client_id](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L61)
577
+ * [is string in format connection_id:client_id](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L61)
572
578
  * with the same client id across multiple connections
573
- * [is unique](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L69)
579
+ * [is unique](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L69)
574
580
  * with a single connection and different client_ids
575
- * [is unique](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L78)
581
+ * [is unique](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L78)
576
582
  * #timestamp
577
- * [retrieves attribute :timestamp as a Time object from ProtocolMessage](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L86)
583
+ * [retrieves attribute :timestamp as a Time object from ProtocolMessage](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L86)
578
584
  * initialized with
579
585
  * :client_id
580
586
  * as UTF_8 string
581
- * [is permitted](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L138)
582
- * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L142)
587
+ * [is permitted](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L138)
588
+ * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L142)
583
589
  * as SHIFT_JIS string
584
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L150)
585
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L154)
590
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L150)
591
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L154)
586
592
  * as ASCII_8BIT string
587
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L162)
588
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L166)
593
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L162)
594
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L166)
589
595
  * as Integer
590
- * [raises an argument error](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L174)
596
+ * [raises an argument error](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L174)
591
597
  * as Nil
592
- * [is permitted](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L182)
598
+ * [is permitted](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L182)
593
599
  * :connection_id
594
600
  * as UTF_8 string
595
- * [is permitted](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L138)
596
- * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L142)
601
+ * [is permitted](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L138)
602
+ * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L142)
597
603
  * as SHIFT_JIS string
598
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L150)
599
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L154)
604
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L150)
605
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L154)
600
606
  * as ASCII_8BIT string
601
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L162)
602
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L166)
607
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L162)
608
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L166)
603
609
  * as Integer
604
- * [raises an argument error](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L174)
610
+ * [raises an argument error](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L174)
605
611
  * as Nil
606
- * [is permitted](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L182)
612
+ * [is permitted](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L182)
607
613
  * :encoding
608
614
  * as UTF_8 string
609
- * [is permitted](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L138)
610
- * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L142)
615
+ * [is permitted](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L138)
616
+ * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L142)
611
617
  * as SHIFT_JIS string
612
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L150)
613
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L154)
618
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L150)
619
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L154)
614
620
  * as ASCII_8BIT string
615
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L162)
616
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L166)
621
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L162)
622
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L166)
617
623
  * as Integer
618
- * [raises an argument error](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L174)
624
+ * [raises an argument error](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L174)
619
625
  * as Nil
620
- * [is permitted](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/presence_message_spec.rb#L182)
626
+ * [is permitted](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/presence_message_spec.rb#L182)
621
627
 
622
628
  ### Ably::Models::ProtocolMessage
623
- _(see [lib/submodules/ably-ruby/spec/unit/models/protocol_message_spec.rb](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/protocol_message_spec.rb))_
629
+ _(see [lib/submodules/ably-ruby/spec/unit/models/protocol_message_spec.rb](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/protocol_message_spec.rb))_
624
630
  * behaves like a model
625
631
  * attributes
626
632
  * #id
627
- * [retrieves attribute :id](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L15)
633
+ * [retrieves attribute :id](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L15)
628
634
  * #channel
629
- * [retrieves attribute :channel](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L15)
635
+ * [retrieves attribute :channel](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L15)
630
636
  * #channel_serial
631
- * [retrieves attribute :channel_serial](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L15)
637
+ * [retrieves attribute :channel_serial](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L15)
632
638
  * #connection_id
633
- * [retrieves attribute :connection_id](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L15)
639
+ * [retrieves attribute :connection_id](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L15)
634
640
  * #==
635
- * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L41)
636
- * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L46)
637
- * [is false when class type differs](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L50)
641
+ * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L41)
642
+ * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L46)
643
+ * [is false when class type differs](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L50)
638
644
  * is immutable
639
- * [prevents changes](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L76)
640
- * [dups options](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L80)
645
+ * [prevents changes](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L76)
646
+ * [dups options](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L80)
641
647
  * attributes
642
648
  * #timestamp
643
- * [retrieves attribute :timestamp as Time object](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/protocol_message_spec.rb#L74)
649
+ * [retrieves attribute :timestamp as Time object](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/protocol_message_spec.rb#L74)
644
650
  * #count
645
651
  * when missing
646
- * [is 1](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/protocol_message_spec.rb#L83)
652
+ * [is 1](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/protocol_message_spec.rb#L83)
647
653
  * when non numeric
648
- * [is 1](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/protocol_message_spec.rb#L90)
654
+ * [is 1](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/protocol_message_spec.rb#L90)
649
655
  * when greater than 1
650
- * [is the value of count](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/protocol_message_spec.rb#L97)
656
+ * [is the value of count](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/protocol_message_spec.rb#L97)
651
657
  * #message_serial
652
- * [converts :msg_serial to an Integer](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/protocol_message_spec.rb#L105)
658
+ * [converts :msg_serial to an Integer](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/protocol_message_spec.rb#L105)
653
659
  * #has_message_serial?
654
660
  * without msg_serial
655
- * [returns false](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/protocol_message_spec.rb#L115)
661
+ * [returns false](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/protocol_message_spec.rb#L115)
656
662
  * with msg_serial
657
- * [returns true](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/protocol_message_spec.rb#L123)
663
+ * [returns true](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/protocol_message_spec.rb#L123)
658
664
  * #connection_serial
659
- * [converts :connection_serial to an Integer](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/protocol_message_spec.rb#L131)
665
+ * [converts :connection_serial to an Integer](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/protocol_message_spec.rb#L131)
660
666
  * #flags
661
667
  * when nil
662
- * [is zero](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/protocol_message_spec.rb#L141)
668
+ * [is zero](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/protocol_message_spec.rb#L141)
663
669
  * when numeric
664
- * [is an Integer](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/protocol_message_spec.rb#L149)
670
+ * [is an Integer](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/protocol_message_spec.rb#L149)
665
671
  * when has_presence
666
- * [#has_presence_flag? is true](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/protocol_message_spec.rb#L157)
672
+ * [#has_presence_flag? is true](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/protocol_message_spec.rb#L157)
667
673
  * when has another future flag
668
- * [#has_presence_flag? is false](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/protocol_message_spec.rb#L165)
674
+ * [#has_presence_flag? is false](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/protocol_message_spec.rb#L165)
669
675
  * #has_connection_serial?
670
676
  * without connection_serial
671
- * [returns false](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/protocol_message_spec.rb#L175)
677
+ * [returns false](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/protocol_message_spec.rb#L175)
672
678
  * with connection_serial
673
- * [returns true](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/protocol_message_spec.rb#L183)
679
+ * [returns true](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/protocol_message_spec.rb#L183)
674
680
  * #serial
675
681
  * with underlying msg_serial
676
- * [converts :msg_serial to an Integer](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/protocol_message_spec.rb#L192)
682
+ * [converts :msg_serial to an Integer](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/protocol_message_spec.rb#L192)
677
683
  * with underlying connection_serial
678
- * [converts :connection_serial to an Integer](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/protocol_message_spec.rb#L200)
684
+ * [converts :connection_serial to an Integer](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/protocol_message_spec.rb#L200)
679
685
  * with underlying connection_serial and msg_serial
680
- * [prefers connection_serial and converts :connection_serial to an Integer](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/protocol_message_spec.rb#L208)
686
+ * [prefers connection_serial and converts :connection_serial to an Integer](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/protocol_message_spec.rb#L208)
681
687
  * #has_serial?
682
688
  * without msg_serial or connection_serial
683
- * [returns false](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/protocol_message_spec.rb#L219)
689
+ * [returns false](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/protocol_message_spec.rb#L219)
684
690
  * with msg_serial
685
- * [returns true](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/protocol_message_spec.rb#L227)
691
+ * [returns true](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/protocol_message_spec.rb#L227)
686
692
  * with connection_serial
687
- * [returns true](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/protocol_message_spec.rb#L235)
693
+ * [returns true](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/protocol_message_spec.rb#L235)
688
694
  * #error
689
695
  * with no error attribute
690
- * [returns nil](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/protocol_message_spec.rb#L245)
696
+ * [returns nil](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/protocol_message_spec.rb#L245)
691
697
  * with nil error
692
- * [returns nil](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/protocol_message_spec.rb#L253)
698
+ * [returns nil](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/protocol_message_spec.rb#L253)
693
699
  * with error
694
- * [returns a valid ErrorInfo object](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/protocol_message_spec.rb#L261)
700
+ * [returns a valid ErrorInfo object](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/protocol_message_spec.rb#L261)
695
701
 
696
702
  ### Ably::Models::Stat
697
- _(see [lib/submodules/ably-ruby/spec/unit/models/stat_spec.rb](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/stat_spec.rb))_
703
+ _(see [lib/submodules/ably-ruby/spec/unit/models/stat_spec.rb](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/stat_spec.rb))_
698
704
  * behaves like a model
699
705
  * attributes
700
706
  * #interval_id
701
- * [retrieves attribute :interval_id](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L15)
707
+ * [retrieves attribute :interval_id](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L15)
702
708
  * #all
703
- * [retrieves attribute :all](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L15)
709
+ * [retrieves attribute :all](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L15)
704
710
  * #inbound
705
- * [retrieves attribute :inbound](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L15)
711
+ * [retrieves attribute :inbound](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L15)
706
712
  * #outbound
707
- * [retrieves attribute :outbound](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L15)
713
+ * [retrieves attribute :outbound](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L15)
708
714
  * #persisted
709
- * [retrieves attribute :persisted](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L15)
715
+ * [retrieves attribute :persisted](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L15)
710
716
  * #connections
711
- * [retrieves attribute :connections](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L15)
717
+ * [retrieves attribute :connections](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L15)
712
718
  * #channels
713
- * [retrieves attribute :channels](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L15)
719
+ * [retrieves attribute :channels](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L15)
714
720
  * #api_requests
715
- * [retrieves attribute :api_requests](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L15)
721
+ * [retrieves attribute :api_requests](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L15)
716
722
  * #token_requests
717
- * [retrieves attribute :token_requests](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L15)
723
+ * [retrieves attribute :token_requests](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L15)
718
724
  * #==
719
- * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L41)
720
- * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L46)
721
- * [is false when class type differs](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L50)
725
+ * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L41)
726
+ * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L46)
727
+ * [is false when class type differs](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L50)
722
728
  * is immutable
723
- * [prevents changes](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L76)
724
- * [dups options](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L80)
729
+ * [prevents changes](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L76)
730
+ * [dups options](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L80)
725
731
  * #interval_granularity
726
- * [returns the granularity of the interval_id](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/stat_spec.rb#L17)
732
+ * [returns the granularity of the interval_id](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/stat_spec.rb#L17)
727
733
  * #interval_time
728
- * [returns a Time object representing the start of the interval](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/stat_spec.rb#L25)
734
+ * [returns a Time object representing the start of the interval](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/stat_spec.rb#L25)
729
735
  * class methods
730
736
  * #to_interval_id
731
737
  * when time zone of time argument is UTC
732
- * [converts time 2014-02-03:05:06 with granularity :month into 2014-02](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/stat_spec.rb#L33)
733
- * [converts time 2014-02-03:05:06 with granularity :day into 2014-02-03](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/stat_spec.rb#L37)
734
- * [converts time 2014-02-03:05:06 with granularity :hour into 2014-02-03:05](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/stat_spec.rb#L41)
735
- * [converts time 2014-02-03:05:06 with granularity :minute into 2014-02-03:05:06](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/stat_spec.rb#L45)
736
- * [fails with invalid granularity](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/stat_spec.rb#L49)
737
- * [fails with invalid time](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/stat_spec.rb#L53)
738
+ * [converts time 2014-02-03:05:06 with granularity :month into 2014-02](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/stat_spec.rb#L33)
739
+ * [converts time 2014-02-03:05:06 with granularity :day into 2014-02-03](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/stat_spec.rb#L37)
740
+ * [converts time 2014-02-03:05:06 with granularity :hour into 2014-02-03:05](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/stat_spec.rb#L41)
741
+ * [converts time 2014-02-03:05:06 with granularity :minute into 2014-02-03:05:06](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/stat_spec.rb#L45)
742
+ * [fails with invalid granularity](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/stat_spec.rb#L49)
743
+ * [fails with invalid time](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/stat_spec.rb#L53)
738
744
  * when time zone of time argument is +02:00
739
- * [converts time 2014-02-03:06 with granularity :hour into 2014-02-03:04 at UTC +00:00](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/stat_spec.rb#L59)
745
+ * [converts time 2014-02-03:06 with granularity :hour into 2014-02-03:04 at UTC +00:00](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/stat_spec.rb#L59)
740
746
  * #from_interval_id
741
- * [converts a month interval_id 2014-02 into a Time object in UTC 0](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/stat_spec.rb#L66)
742
- * [converts a day interval_id 2014-02-03 into a Time object in UTC 0](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/stat_spec.rb#L71)
743
- * [converts an hour interval_id 2014-02-03:05 into a Time object in UTC 0](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/stat_spec.rb#L76)
744
- * [converts a minute interval_id 2014-02-03:05:06 into a Time object in UTC 0](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/stat_spec.rb#L81)
745
- * [fails with an invalid interval_id 14-20](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/stat_spec.rb#L86)
747
+ * [converts a month interval_id 2014-02 into a Time object in UTC 0](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/stat_spec.rb#L66)
748
+ * [converts a day interval_id 2014-02-03 into a Time object in UTC 0](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/stat_spec.rb#L71)
749
+ * [converts an hour interval_id 2014-02-03:05 into a Time object in UTC 0](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/stat_spec.rb#L76)
750
+ * [converts a minute interval_id 2014-02-03:05:06 into a Time object in UTC 0](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/stat_spec.rb#L81)
751
+ * [fails with an invalid interval_id 14-20](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/stat_spec.rb#L86)
746
752
  * #granularity_from_interval_id
747
- * [returns a :month interval_id for 2014-02](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/stat_spec.rb#L92)
748
- * [returns a :day interval_id for 2014-02-03](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/stat_spec.rb#L96)
749
- * [returns a :hour interval_id for 2014-02-03:05](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/stat_spec.rb#L100)
750
- * [returns a :minute interval_id for 2014-02-03:05:06](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/stat_spec.rb#L104)
751
- * [fails with an invalid interval_id 14-20](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/stat_spec.rb#L108)
753
+ * [returns a :month interval_id for 2014-02](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/stat_spec.rb#L92)
754
+ * [returns a :day interval_id for 2014-02-03](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/stat_spec.rb#L96)
755
+ * [returns a :hour interval_id for 2014-02-03:05](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/stat_spec.rb#L100)
756
+ * [returns a :minute interval_id for 2014-02-03:05:06](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/stat_spec.rb#L104)
757
+ * [fails with an invalid interval_id 14-20](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/stat_spec.rb#L108)
752
758
 
753
759
  ### Ably::Models::Token
754
- _(see [lib/submodules/ably-ruby/spec/unit/models/token_spec.rb](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/token_spec.rb))_
760
+ _(see [lib/submodules/ably-ruby/spec/unit/models/token_spec.rb](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/token_spec.rb))_
755
761
  * behaves like a model
756
762
  * attributes
757
763
  * #id
758
- * [retrieves attribute :id](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L15)
764
+ * [retrieves attribute :id](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L15)
759
765
  * #capability
760
- * [retrieves attribute :capability](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L15)
766
+ * [retrieves attribute :capability](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L15)
761
767
  * #client_id
762
- * [retrieves attribute :client_id](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L15)
768
+ * [retrieves attribute :client_id](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L15)
763
769
  * #nonce
764
- * [retrieves attribute :nonce](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L15)
770
+ * [retrieves attribute :nonce](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L15)
765
771
  * #==
766
- * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L41)
767
- * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L46)
768
- * [is false when class type differs](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L50)
772
+ * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L41)
773
+ * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L46)
774
+ * [is false when class type differs](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L50)
769
775
  * is immutable
770
- * [prevents changes](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L76)
771
- * [dups options](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/model_behaviour.rb#L80)
776
+ * [prevents changes](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L76)
777
+ * [dups options](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/model_behaviour.rb#L80)
772
778
  * defaults
773
- * [should default TTL to 1 hour](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/token_spec.rb#L14)
774
- * [should default capability to all](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/token_spec.rb#L18)
775
- * [should only have defaults for :ttl and :capability](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/token_spec.rb#L22)
779
+ * [should default TTL to 1 hour](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/token_spec.rb#L14)
780
+ * [should default capability to all](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/token_spec.rb#L18)
781
+ * [should only have defaults for :ttl and :capability](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/token_spec.rb#L22)
776
782
  * attributes
777
783
  * #key_id
778
- * [retrieves attribute :key](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/token_spec.rb#L32)
784
+ * [retrieves attribute :key](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/token_spec.rb#L32)
779
785
  * #issued_at
780
- * [retrieves attribute :issued_at as Time](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/token_spec.rb#L42)
786
+ * [retrieves attribute :issued_at as Time](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/token_spec.rb#L42)
781
787
  * #expires_at
782
- * [retrieves attribute :expires as Time](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/token_spec.rb#L42)
788
+ * [retrieves attribute :expires as Time](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/token_spec.rb#L42)
783
789
  * #expired?
784
790
  * once grace period buffer has passed
785
- * [is true](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/token_spec.rb#L55)
791
+ * [is true](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/token_spec.rb#L55)
786
792
  * within grace period buffer
787
- * [is false](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/token_spec.rb#L63)
793
+ * [is false](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/token_spec.rb#L63)
788
794
  * ==
789
- * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/token_spec.rb#L73)
790
- * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/token_spec.rb#L78)
791
- * [is false when class type differs](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/models/token_spec.rb#L82)
795
+ * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/token_spec.rb#L73)
796
+ * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/token_spec.rb#L78)
797
+ * [is false when class type differs](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/models/token_spec.rb#L82)
792
798
 
793
799
  ### Ably::Rest::Channels
794
- _(see [lib/submodules/ably-ruby/spec/unit/rest/channel_spec.rb](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/channel_spec.rb))_
800
+ _(see [lib/submodules/ably-ruby/spec/unit/rest/channel_spec.rb](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/channel_spec.rb))_
795
801
  * #initializer
796
802
  * as UTF_8 string
797
- * [is permitted](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/channel_spec.rb#L16)
798
- * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/channel_spec.rb#L20)
803
+ * [is permitted](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/channel_spec.rb#L16)
804
+ * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/channel_spec.rb#L20)
799
805
  * as SHIFT_JIS string
800
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/channel_spec.rb#L28)
801
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/channel_spec.rb#L32)
806
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/channel_spec.rb#L28)
807
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/channel_spec.rb#L32)
802
808
  * as ASCII_8BIT string
803
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/channel_spec.rb#L40)
804
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/channel_spec.rb#L44)
809
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/channel_spec.rb#L40)
810
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/channel_spec.rb#L44)
805
811
  * as Integer
806
- * [raises an argument error](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/channel_spec.rb#L52)
812
+ * [raises an argument error](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/channel_spec.rb#L52)
807
813
  * as Nil
808
- * [raises an argument error](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/channel_spec.rb#L60)
814
+ * [raises an argument error](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/channel_spec.rb#L60)
809
815
  * #publish name argument
810
816
  * as UTF_8 string
811
- * [is permitted](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/channel_spec.rb#L72)
817
+ * [is permitted](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/channel_spec.rb#L72)
812
818
  * as SHIFT_JIS string
813
- * [is permitted](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/channel_spec.rb#L80)
819
+ * [is permitted](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/channel_spec.rb#L80)
814
820
  * as ASCII_8BIT string
815
- * [is permitted](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/channel_spec.rb#L88)
821
+ * [is permitted](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/channel_spec.rb#L88)
816
822
  * as Integer
817
- * [raises an argument error](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/channel_spec.rb#L96)
823
+ * [raises an argument error](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/channel_spec.rb#L96)
818
824
  * as Nil
819
- * [raises an argument error](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/channel_spec.rb#L104)
825
+ * [raises an argument error](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/channel_spec.rb#L104)
820
826
 
821
827
  ### Ably::Rest::Channels
822
- _(see [lib/submodules/ably-ruby/spec/unit/rest/channels_spec.rb](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/channels_spec.rb))_
828
+ _(see [lib/submodules/ably-ruby/spec/unit/rest/channels_spec.rb](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/channels_spec.rb))_
823
829
  * creating channels
824
- * [#get creates a channel](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/channels_spec.rb#L12)
825
- * [#get will reuse the channel object](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/channels_spec.rb#L17)
826
- * [[] creates a channel](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/channels_spec.rb#L23)
830
+ * [#get creates a channel](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/channels_spec.rb#L12)
831
+ * [#get will reuse the channel object](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/channels_spec.rb#L17)
832
+ * [[] creates a channel](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/channels_spec.rb#L23)
827
833
  * #fetch
828
- * [retrieves a channel if it exists](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/channels_spec.rb#L30)
829
- * [calls the block if channel is missing](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/channels_spec.rb#L35)
834
+ * [retrieves a channel if it exists](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/channels_spec.rb#L30)
835
+ * [calls the block if channel is missing](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/channels_spec.rb#L35)
830
836
  * destroying channels
831
- * [#release releases the channel resoures](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/channels_spec.rb#L43)
837
+ * [#release releases the channel resoures](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/channels_spec.rb#L43)
832
838
  * is Enumerable
833
- * [allows enumeration](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/channels_spec.rb#L59)
834
- * [provides #length](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/channels_spec.rb#L75)
839
+ * [allows enumeration](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/channels_spec.rb#L59)
840
+ * [provides #length](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/channels_spec.rb#L75)
835
841
  * #each
836
- * [returns an enumerator](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/channels_spec.rb#L64)
837
- * [yields each channel](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/channels_spec.rb#L68)
842
+ * [returns an enumerator](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/channels_spec.rb#L64)
843
+ * [yields each channel](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/channels_spec.rb#L68)
838
844
 
839
845
  ### Ably::Rest::Client
840
- _(see [lib/submodules/ably-ruby/spec/unit/rest/client_spec.rb](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/client_spec.rb))_
846
+ _(see [lib/submodules/ably-ruby/spec/unit/rest/client_spec.rb](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/client_spec.rb))_
841
847
  * behaves like a client initializer
842
848
  * with invalid arguments
843
849
  * empty hash
844
- * [raises an exception](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/client_initializer_behaviour.rb#L28)
850
+ * [raises an exception](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/client_initializer_behaviour.rb#L28)
845
851
  * nil
846
- * [raises an exception](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/client_initializer_behaviour.rb#L36)
852
+ * [raises an exception](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/client_initializer_behaviour.rb#L36)
847
853
  * api_key: "invalid"
848
- * [raises an exception](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/client_initializer_behaviour.rb#L44)
854
+ * [raises an exception](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/client_initializer_behaviour.rb#L44)
849
855
  * api_key: "invalid:asdad"
850
- * [raises an exception](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/client_initializer_behaviour.rb#L52)
856
+ * [raises an exception](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/client_initializer_behaviour.rb#L52)
851
857
  * api_key and key_id
852
- * [raises an exception](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/client_initializer_behaviour.rb#L60)
858
+ * [raises an exception](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/client_initializer_behaviour.rb#L60)
853
859
  * api_key and key_secret
854
- * [raises an exception](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/client_initializer_behaviour.rb#L68)
860
+ * [raises an exception](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/client_initializer_behaviour.rb#L68)
855
861
  * client_id as only option
856
- * [requires a valid key](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/client_initializer_behaviour.rb#L76)
862
+ * [requires a valid key](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/client_initializer_behaviour.rb#L76)
857
863
  * with valid arguments
858
864
  * api_key only
859
- * [connects to the Ably service](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/client_initializer_behaviour.rb#L87)
865
+ * [connects to the Ably service](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/client_initializer_behaviour.rb#L87)
860
866
  * key_id and key_secret
861
- * [constructs an api_key](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/client_initializer_behaviour.rb#L95)
867
+ * [constructs an api_key](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/client_initializer_behaviour.rb#L95)
862
868
  * with a string key instead of options hash
863
- * [sets the api_key](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/client_initializer_behaviour.rb#L103)
864
- * [sets the key_id](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/client_initializer_behaviour.rb#L107)
865
- * [sets the key_secret](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/client_initializer_behaviour.rb#L111)
869
+ * [sets the api_key](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/client_initializer_behaviour.rb#L103)
870
+ * [sets the key_id](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/client_initializer_behaviour.rb#L107)
871
+ * [sets the key_secret](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/client_initializer_behaviour.rb#L111)
872
+ * with a string token key instead of options hash
873
+ * [sets the token_id](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/client_initializer_behaviour.rb#L119)
866
874
  * with token
867
- * [sets the token_id](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/client_initializer_behaviour.rb#L119)
875
+ * [sets the token_id](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/client_initializer_behaviour.rb#L127)
868
876
  * endpoint
869
- * [defaults to production](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/client_initializer_behaviour.rb#L125)
877
+ * [defaults to production](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/client_initializer_behaviour.rb#L133)
870
878
  * with environment option
871
- * [uses an alternate endpoint](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/client_initializer_behaviour.rb#L132)
879
+ * [uses an alternate endpoint](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/client_initializer_behaviour.rb#L140)
872
880
  * tls
873
- * [defaults to TLS](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/client_initializer_behaviour.rb#L151)
881
+ * [defaults to TLS](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/client_initializer_behaviour.rb#L159)
874
882
  * set to false
875
- * [uses plain text](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/client_initializer_behaviour.rb#L142)
876
- * [uses HTTP](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/client_initializer_behaviour.rb#L146)
883
+ * [uses plain text](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/client_initializer_behaviour.rb#L150)
884
+ * [uses HTTP](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/client_initializer_behaviour.rb#L154)
877
885
  * logger
878
886
  * default
879
- * [uses Ruby Logger](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/client_initializer_behaviour.rb#L158)
880
- * [specifies Logger::ERROR log level](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/client_initializer_behaviour.rb#L162)
887
+ * [uses Ruby Logger](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/client_initializer_behaviour.rb#L166)
888
+ * [specifies Logger::ERROR log level](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/client_initializer_behaviour.rb#L170)
881
889
  * with log_level :none
882
- * [silences all logging with a NilLogger](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/client_initializer_behaviour.rb#L170)
890
+ * [silences all logging with a NilLogger](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/client_initializer_behaviour.rb#L178)
883
891
  * with custom logger and log_level
884
- * [uses the custom logger](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/client_initializer_behaviour.rb#L188)
885
- * [sets the custom log level](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/client_initializer_behaviour.rb#L192)
892
+ * [uses the custom logger](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/client_initializer_behaviour.rb#L196)
893
+ * [sets the custom log level](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/client_initializer_behaviour.rb#L200)
886
894
  * delegators
887
- * [delegates :client_id to .auth](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/client_initializer_behaviour.rb#L202)
888
- * [delegates :auth_options to .auth](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/shared/client_initializer_behaviour.rb#L207)
895
+ * [delegates :client_id to .auth](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/client_initializer_behaviour.rb#L210)
896
+ * [delegates :auth_options to .auth](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/shared/client_initializer_behaviour.rb#L215)
889
897
  * initializer options
890
898
  * TLS
891
899
  * disabled
892
- * [fails for any operation with basic auth and attempting to send an API key over a non-secure connection](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/client_spec.rb#L17)
900
+ * [fails for any operation with basic auth and attempting to send an API key over a non-secure connection](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/client_spec.rb#L17)
893
901
  * :use_token_auth
894
902
  * set to false
895
903
  * with an api_key with :tls => false
896
- * [fails for any operation with basic auth and attempting to send an API key over a non-secure connection](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/client_spec.rb#L28)
904
+ * [fails for any operation with basic auth and attempting to send an API key over a non-secure connection](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/client_spec.rb#L28)
897
905
  * without an api_key
898
- * [fails as an api_key is required if not using token auth](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/client_spec.rb#L36)
906
+ * [fails as an api_key is required if not using token auth](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/client_spec.rb#L36)
899
907
  * set to true
900
908
  * without an api_key or token_id
901
- * [fails as an api_key is required to issue tokens](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/client_spec.rb#L46)
909
+ * [fails as an api_key is required to issue tokens](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/client_spec.rb#L46)
902
910
 
903
911
  ### Ably::Rest
904
- _(see [lib/submodules/ably-ruby/spec/unit/rest/rest_spec.rb](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/rest_spec.rb))_
905
- * [constructor returns an Ably::Rest::Client](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/rest/rest_spec.rb#L7)
912
+ _(see [lib/submodules/ably-ruby/spec/unit/rest/rest_spec.rb](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/rest_spec.rb))_
913
+ * [constructor returns an Ably::Rest::Client](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/rest/rest_spec.rb#L7)
906
914
 
907
915
  ### Ably::Util::Crypto
908
- _(see [lib/submodules/ably-ruby/spec/unit/util/crypto_spec.rb](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/util/crypto_spec.rb))_
916
+ _(see [lib/submodules/ably-ruby/spec/unit/util/crypto_spec.rb](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/util/crypto_spec.rb))_
909
917
  * defaults
910
- * [match other client libraries](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/util/crypto_spec.rb#L18)
918
+ * [match other client libraries](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/util/crypto_spec.rb#L18)
911
919
  * encrypts & decrypt
912
- * [#encrypt encrypts a string](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/util/crypto_spec.rb#L28)
913
- * [#decrypt decrypts a string](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/util/crypto_spec.rb#L33)
920
+ * [#encrypt encrypts a string](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/util/crypto_spec.rb#L28)
921
+ * [#decrypt decrypts a string](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/util/crypto_spec.rb#L33)
914
922
  * encrypting an empty string
915
- * [raises an ArgumentError](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/util/crypto_spec.rb#L42)
923
+ * [raises an ArgumentError](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/util/crypto_spec.rb#L42)
916
924
  * using shared client lib fixture data
917
925
  * with AES-128-CBC
918
926
  * behaves like an Ably encrypter and decrypter
919
927
  * text payload
920
- * [encrypts exactly the same binary data as other client libraries](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/util/crypto_spec.rb#L65)
921
- * [decrypts exactly the same binary data as other client libraries](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/util/crypto_spec.rb#L69)
928
+ * [encrypts exactly the same binary data as other client libraries](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/util/crypto_spec.rb#L65)
929
+ * [decrypts exactly the same binary data as other client libraries](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/util/crypto_spec.rb#L69)
922
930
  * with AES-256-CBC
923
931
  * behaves like an Ably encrypter and decrypter
924
932
  * text payload
925
- * [encrypts exactly the same binary data as other client libraries](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/util/crypto_spec.rb#L65)
926
- * [decrypts exactly the same binary data as other client libraries](https://github.com/ably/ably-ruby/tree/ffa3b80642e515c63d5f2ced07c2ae3df2c4fd05/spec/unit/util/crypto_spec.rb#L69)
933
+ * [encrypts exactly the same binary data as other client libraries](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/util/crypto_spec.rb#L65)
934
+ * [decrypts exactly the same binary data as other client libraries](https://github.com/ably/ably-ruby/tree/da0271f013cdb065e3bd4a68e4753d8435c28457/spec/unit/util/crypto_spec.rb#L69)
927
935
 
928
936
  -------
929
937
 
930
938
  ## Test summary
931
939
 
932
- * Passing tests: 442
940
+ * Passing tests: 448
933
941
  * Pending tests: 0
934
- * Failing tests: 1
942
+ * Failing tests: 0