ably-rest 0.7.3 → 0.7.5

Sign up to get free protection for your applications and to get access to all the features.
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