ably 1.1.4 → 1.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: df28e1d33dcfce35d2f220e99a4d83b95dda7d050de3fbcd7b05d91b640841ac
4
- data.tar.gz: dc0c2283aa2b1303a7954dc2368bfa43a95795f11993f9ef1954651b2062b8e0
3
+ metadata.gz: 57c815b3e4e0dc7d47193fc7778dafa3d3dac69712b996c09e87e8021c0d739d
4
+ data.tar.gz: de4aecba3dd4d87986d11fdbbde09377b8d543b94ff165d2a89bb4526208fa07
5
5
  SHA512:
6
- metadata.gz: 1e5eb2adc93ac58817fcf56a5cfe8696d0edab6277dac0dd4fd2b9bc8948964a6e13a5630238c1bcccd16b2e037ba425bb98de3c839069febb709373dd22f588
7
- data.tar.gz: a4fd0c86492a52d7981b30d6049fe9be0d49bc276f09882e93cccc0a42daebe8916b16b5adce9581217dadc7937bce3b54e3fcba1b005ed3beaf8ac09e421f77
6
+ metadata.gz: 55548f44c758f2ea9aaa2c5f9ecdfb8a06c812513dd32417980fee828b8da193ea4418b574a312e12c2dfabc68dbb8116c906071549545a65772e2a2c4ad6fc4
7
+ data.tar.gz: 3595470c751c1972c27f9914a7da1313c0479d93bb4e1bfcd8157821db0411e6f5c8729fb18eddbf7e4007b59a10e95c6cbd18c00d5b9ef7bc08f3f5f5de6d4b
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Change Log
2
2
 
3
+ ## [v1.1.5](https://github.com/ably/ably-ruby/tree/v1.1.5)
4
+
5
+ [Full Changelog](https://github.com/ably/ably-ruby/compare/v1.1.4...v.1.1.5)
6
+
7
+ **Implemented enhancements:**
8
+
9
+ - Upgrade to support HTTP/2 [\#192](https://github.com/ably/ably-ruby/issues/192), fixed in [\#197](https://github.com/ably/ably-ruby/pull/197) ([mattheworiordan](https://github.com/mattheworiordan))
10
+ - Default fallback hosts for custom environments [\#232](https://github.com/ably/ably-ruby/issues/232), fixed in [\#196](https://github.com/ably/ably-ruby/pull/196) ([mattheworiordan](https://github.com/mattheworiordan), [owenpearson](https://github.com/owenpearson), [lmars](https://github.com/lmars))
11
+
3
12
  ## [v1.1.4](https://github.com/ably/ably-ruby/tree/v1.1.4)
4
13
 
5
14
  [Full Changelog](https://github.com/ably/ably-ruby/compare/v1.1.3...v1.1.4)
data/SPEC.md CHANGED
@@ -1,4 +1,4 @@
1
- # Ably Realtime & REST Client Library 1.1.4 Specification
1
+ # Ably Realtime & REST Client Library 1.1.5 Specification
2
2
 
3
3
  ### Ably::Realtime::Auth
4
4
  _(see [spec/acceptance/realtime/auth_spec.rb](./spec/acceptance/realtime/auth_spec.rb))_
@@ -600,123 +600,124 @@ _(see [spec/acceptance/realtime/connection_failures_spec.rb](./spec/acceptance/r
600
600
  * request fails due to slow response and subsequent timeout
601
601
  * [the connection moves to the disconnected state and tries again, returning again to the disconnected state (#RSA4c, #RSA4c1, #RSA4c2)](./spec/acceptance/realtime/connection_failures_spec.rb#L127)
602
602
  * request fails once due to slow response but succeeds the second time
603
- * [the connection moves to the disconnected state and tries again, returning again to the disconnected state (#RSA4c, #RSA4c1, #RSA4c2)](./spec/acceptance/realtime/connection_failures_spec.rb#L165)
603
+ * [the connection moves to the disconnected state and tries again, returning again to the disconnected state (#RSA4c, #RSA4c1, #RSA4c2)](./spec/acceptance/realtime/connection_failures_spec.rb#L175)
604
604
  * existing CONNECTED connection
605
605
  * authorize request failure leaves connection in existing condition
606
- * [the connection remains in the CONNECTED state and authorize fails (#RSA4c, #RSA4c1, #RSA4c3)](./spec/acceptance/realtime/connection_failures_spec.rb#L186)
606
+ * [the connection remains in the CONNECTED state and authorize fails (#RSA4c, #RSA4c1, #RSA4c3)](./spec/acceptance/realtime/connection_failures_spec.rb#L196)
607
607
  * with auth_callback
608
608
  * opening a new connection
609
609
  * when callback fails due to an exception
610
- * [the connection moves to the disconnected state and tries again, returning again to the disconnected state (#RSA4c, #RSA4c1, #RSA4c2)](./spec/acceptance/realtime/connection_failures_spec.rb#L214)
610
+ * [the connection moves to the disconnected state and tries again, returning again to the disconnected state (#RSA4c, #RSA4c1, #RSA4c2)](./spec/acceptance/realtime/connection_failures_spec.rb#L224)
611
611
  * existing CONNECTED connection
612
612
  * when callback fails due to the request taking longer than realtime_request_timeout
613
- * [the authorization request fails as configured in the realtime_request_timeout (#RSA4c, #RSA4c1, #RSA4c3)](./spec/acceptance/realtime/connection_failures_spec.rb#L245)
613
+ * [the authorization request fails as configured in the realtime_request_timeout (#RSA4c, #RSA4c1, #RSA4c3)](./spec/acceptance/realtime/connection_failures_spec.rb#L255)
614
614
  * automatic connection retry
615
615
  * with invalid WebSocket host
616
616
  * when disconnected
617
- * [enters the suspended state after multiple attempts to connect](./spec/acceptance/realtime/connection_failures_spec.rb#L310)
617
+ * [enters the suspended state after multiple attempts to connect](./spec/acceptance/realtime/connection_failures_spec.rb#L320)
618
618
  * for the first time
619
- * [reattempts connection immediately and then waits disconnected_retry_timeout for a subsequent attempt](./spec/acceptance/realtime/connection_failures_spec.rb#L331)
619
+ * [reattempts connection immediately and then waits disconnected_retry_timeout for a subsequent attempt](./spec/acceptance/realtime/connection_failures_spec.rb#L341)
620
620
  * #close
621
- * [transitions connection state to :closed](./spec/acceptance/realtime/connection_failures_spec.rb#L348)
621
+ * [transitions connection state to :closed](./spec/acceptance/realtime/connection_failures_spec.rb#L358)
622
622
  * when connection state is :suspended
623
- * [stays in the suspended state after any number of reconnection attempts](./spec/acceptance/realtime/connection_failures_spec.rb#L367)
623
+ * [stays in the suspended state after any number of reconnection attempts](./spec/acceptance/realtime/connection_failures_spec.rb#L377)
624
624
  * for the first time
625
- * [waits suspended_retry_timeout before attempting to reconnect](./spec/acceptance/realtime/connection_failures_spec.rb#L390)
625
+ * [waits suspended_retry_timeout before attempting to reconnect](./spec/acceptance/realtime/connection_failures_spec.rb#L400)
626
626
  * #close
627
- * [transitions connection state to :closed](./spec/acceptance/realtime/connection_failures_spec.rb#L412)
627
+ * [transitions connection state to :closed](./spec/acceptance/realtime/connection_failures_spec.rb#L422)
628
628
  * when connection state is :failed
629
629
  * #close
630
- * [will not transition state to :close and fails with an InvalidStateChange exception](./spec/acceptance/realtime/connection_failures_spec.rb#L431)
630
+ * [will not transition state to :close and fails with an InvalidStateChange exception](./spec/acceptance/realtime/connection_failures_spec.rb#L441)
631
631
  * #error_reason
632
- * [contains the error when state is disconnected](./spec/acceptance/realtime/connection_failures_spec.rb#L452)
633
- * [contains the error when state is suspended](./spec/acceptance/realtime/connection_failures_spec.rb#L452)
634
- * [contains the error when state is failed](./spec/acceptance/realtime/connection_failures_spec.rb#L452)
635
- * [is reset to nil when :connected](./spec/acceptance/realtime/connection_failures_spec.rb#L466)
636
- * [is reset to nil when :closed](./spec/acceptance/realtime/connection_failures_spec.rb#L477)
632
+ * [contains the error when state is disconnected](./spec/acceptance/realtime/connection_failures_spec.rb#L462)
633
+ * [contains the error when state is suspended](./spec/acceptance/realtime/connection_failures_spec.rb#L462)
634
+ * [contains the error when state is failed](./spec/acceptance/realtime/connection_failures_spec.rb#L462)
635
+ * [is reset to nil when :connected](./spec/acceptance/realtime/connection_failures_spec.rb#L476)
636
+ * [is reset to nil when :closed](./spec/acceptance/realtime/connection_failures_spec.rb#L487)
637
637
  * #connect
638
638
  * connection opening times out
639
- * [attempts to reconnect](./spec/acceptance/realtime/connection_failures_spec.rb#L508)
639
+ * [attempts to reconnect](./spec/acceptance/realtime/connection_failures_spec.rb#L518)
640
640
  * when retry intervals are stubbed to attempt reconnection quickly
641
- * [never calls the provided success block](./spec/acceptance/realtime/connection_failures_spec.rb#L532)
641
+ * [never calls the provided success block](./spec/acceptance/realtime/connection_failures_spec.rb#L542)
642
642
  * connection resume
643
643
  * when DISCONNECTED ProtocolMessage received from the server
644
- * [reconnects automatically and immediately](./spec/acceptance/realtime/connection_failures_spec.rb#L563)
644
+ * [reconnects automatically and immediately](./spec/acceptance/realtime/connection_failures_spec.rb#L573)
645
645
  * connection state freshness is monitored
646
- * [resumes connections when disconnected within the connection_state_ttl period (#RTN15g)](./spec/acceptance/realtime/connection_failures_spec.rb#L584)
646
+ * [resumes connections when disconnected within the connection_state_ttl period (#RTN15g)](./spec/acceptance/realtime/connection_failures_spec.rb#L594)
647
647
  * when connection_state_ttl period has passed since being disconnected
648
- * [clears the local connection state and uses a new connection when the connection_state_ttl period has passed (#RTN15g)](./spec/acceptance/realtime/connection_failures_spec.rb#L624)
648
+ * [clears the local connection state and uses a new connection when the connection_state_ttl period has passed (#RTN15g)](./spec/acceptance/realtime/connection_failures_spec.rb#L634)
649
649
  * when connection_state_ttl period has passed since last activity on the connection
650
- * [does not clear the local connection state when the connection_state_ttl period has passed since last activity, but the idle timeout has not passed (#RTN15g1, #RTN15g2)](./spec/acceptance/realtime/connection_failures_spec.rb#L677)
651
- * [clears the local connection state and uses a new connection when the connection_state_ttl + max_idle_interval period has passed since last activity (#RTN15g1, #RTN15g2)](./spec/acceptance/realtime/connection_failures_spec.rb#L711)
652
- * [still reattaches the channels automatically following a new connection being established (#RTN15g2)](./spec/acceptance/realtime/connection_failures_spec.rb#L746)
650
+ * [does not clear the local connection state when the connection_state_ttl period has passed since last activity, but the idle timeout has not passed (#RTN15g1, #RTN15g2)](./spec/acceptance/realtime/connection_failures_spec.rb#L687)
651
+ * [clears the local connection state and uses a new connection when the connection_state_ttl + max_idle_interval period has passed since last activity (#RTN15g1, #RTN15g2)](./spec/acceptance/realtime/connection_failures_spec.rb#L721)
652
+ * [still reattaches the channels automatically following a new connection being established (#RTN15g2)](./spec/acceptance/realtime/connection_failures_spec.rb#L756)
653
653
  * and subsequently fails to reconnect
654
- * [retries every 15 seconds](./spec/acceptance/realtime/connection_failures_spec.rb#L805)
654
+ * [retries every 15 seconds](./spec/acceptance/realtime/connection_failures_spec.rb#L815)
655
655
  * when websocket transport is abruptly disconnected
656
- * [reconnects automatically](./spec/acceptance/realtime/connection_failures_spec.rb#L848)
656
+ * [reconnects automatically](./spec/acceptance/realtime/connection_failures_spec.rb#L858)
657
657
  * hosts used
658
- * [reconnects with the default host](./spec/acceptance/realtime/connection_failures_spec.rb#L864)
658
+ * [reconnects with the default host](./spec/acceptance/realtime/connection_failures_spec.rb#L874)
659
659
  * after successfully reconnecting and resuming
660
- * [retains connection_id and updates the connection_key (#RTN15e, #RTN16d)](./spec/acceptance/realtime/connection_failures_spec.rb#L888)
661
- * [includes the error received in the connection state change from Ably but leaves the channels attached](./spec/acceptance/realtime/connection_failures_spec.rb#L903)
662
- * [retains channel subscription state](./spec/acceptance/realtime/connection_failures_spec.rb#L929)
663
- * [retains the client_msg_serial (#RTN15c2, #RTN15c3)](./spec/acceptance/realtime/connection_failures_spec.rb#L990)
660
+ * [retains connection_id and updates the connection_key (#RTN15e, #RTN16d)](./spec/acceptance/realtime/connection_failures_spec.rb#L898)
661
+ * [includes the error received in the connection state change from Ably but leaves the channels attached](./spec/acceptance/realtime/connection_failures_spec.rb#L913)
662
+ * [retains channel subscription state](./spec/acceptance/realtime/connection_failures_spec.rb#L939)
663
+ * [retains the client_msg_serial (#RTN15c2, #RTN15c3)](./spec/acceptance/realtime/connection_failures_spec.rb#L1000)
664
664
  * when messages were published whilst the client was disconnected
665
- * [receives the messages published whilst offline](./spec/acceptance/realtime/connection_failures_spec.rb#L957)
665
+ * [receives the messages published whilst offline](./spec/acceptance/realtime/connection_failures_spec.rb#L967)
666
666
  * when failing to resume
667
667
  * because the connection_key is not or no longer valid
668
- * [updates the connection_id and connection_key](./spec/acceptance/realtime/connection_failures_spec.rb#L1030)
669
- * [issue a reattach for all attached channels and fail all message awaiting an ACK (#RTN15c3)](./spec/acceptance/realtime/connection_failures_spec.rb#L1045)
670
- * [issue a reattach for all attaching channels and fail all queued messages (#RTN15c3)](./spec/acceptance/realtime/connection_failures_spec.rb#L1083)
671
- * [issue a attach for all suspended channels (#RTN15c3)](./spec/acceptance/realtime/connection_failures_spec.rb#L1119)
672
- * [sets the error reason on each channel](./spec/acceptance/realtime/connection_failures_spec.rb#L1157)
673
- * [continues to use the client_msg_serial (#RTN15c3)](./spec/acceptance/realtime/connection_failures_spec.rb#L1172)
668
+ * [updates the connection_id and connection_key](./spec/acceptance/realtime/connection_failures_spec.rb#L1040)
669
+ * [issue a reattach for all attached channels and fail all message awaiting an ACK (#RTN15c3)](./spec/acceptance/realtime/connection_failures_spec.rb#L1055)
670
+ * [issue a reattach for all attaching channels and fail all queued messages (#RTN15c3)](./spec/acceptance/realtime/connection_failures_spec.rb#L1093)
671
+ * [issue a attach for all suspended channels (#RTN15c3)](./spec/acceptance/realtime/connection_failures_spec.rb#L1129)
672
+ * [sets the error reason on each channel](./spec/acceptance/realtime/connection_failures_spec.rb#L1167)
673
+ * [continues to use the client_msg_serial (#RTN15c3)](./spec/acceptance/realtime/connection_failures_spec.rb#L1182)
674
674
  * as the DISCONNECTED window to resume has passed
675
- * [starts a new connection automatically and does not try and resume](./spec/acceptance/realtime/connection_failures_spec.rb#L1209)
675
+ * [starts a new connection automatically and does not try and resume](./spec/acceptance/realtime/connection_failures_spec.rb#L1219)
676
676
  * when an ERROR protocol message is received
677
677
  * whilst connecting
678
678
  * with a token error code in the range 40140 <= code < 40150 (#RTN14b)
679
- * [triggers a re-authentication](./spec/acceptance/realtime/connection_failures_spec.rb#L1240)
679
+ * [triggers a re-authentication](./spec/acceptance/realtime/connection_failures_spec.rb#L1250)
680
680
  * with an error code indicating an error other than a token failure (#RTN14g, #RTN15i)
681
- * [causes the connection to fail](./spec/acceptance/realtime/connection_failures_spec.rb#L1256)
681
+ * [causes the connection to fail](./spec/acceptance/realtime/connection_failures_spec.rb#L1266)
682
682
  * with no error code indicating an error other than a token failure (#RTN14g, #RTN15i)
683
- * [causes the connection to fail](./spec/acceptance/realtime/connection_failures_spec.rb#L1269)
683
+ * [causes the connection to fail](./spec/acceptance/realtime/connection_failures_spec.rb#L1279)
684
684
  * whilst connected
685
685
  * with a token error code in the range 40140 <= code < 40150 (#RTN14b)
686
- * [triggers a re-authentication](./spec/acceptance/realtime/connection_failures_spec.rb#L1240)
686
+ * [triggers a re-authentication](./spec/acceptance/realtime/connection_failures_spec.rb#L1250)
687
687
  * with an error code indicating an error other than a token failure (#RTN14g, #RTN15i)
688
- * [causes the connection to fail](./spec/acceptance/realtime/connection_failures_spec.rb#L1256)
688
+ * [causes the connection to fail](./spec/acceptance/realtime/connection_failures_spec.rb#L1266)
689
689
  * with no error code indicating an error other than a token failure (#RTN14g, #RTN15i)
690
- * [causes the connection to fail](./spec/acceptance/realtime/connection_failures_spec.rb#L1269)
690
+ * [causes the connection to fail](./spec/acceptance/realtime/connection_failures_spec.rb#L1279)
691
691
  * whilst resuming
692
692
  * with a token error code in the region 40140 <= code < 40150 (RTN15c5)
693
- * [triggers a re-authentication and then resumes the connection](./spec/acceptance/realtime/connection_failures_spec.rb#L1313)
693
+ * [triggers a re-authentication and then resumes the connection](./spec/acceptance/realtime/connection_failures_spec.rb#L1323)
694
694
  * with any other error (#RTN15c4)
695
- * [moves the connection to the failed state](./spec/acceptance/realtime/connection_failures_spec.rb#L1345)
695
+ * [moves the connection to the failed state](./spec/acceptance/realtime/connection_failures_spec.rb#L1355)
696
696
  * fallback host feature
697
697
  * with custom realtime websocket host option
698
- * [never uses a fallback host](./spec/acceptance/realtime/connection_failures_spec.rb#L1389)
698
+ * [never uses a fallback host](./spec/acceptance/realtime/connection_failures_spec.rb#L1399)
699
699
  * with custom realtime websocket port option
700
- * [never uses a fallback host](./spec/acceptance/realtime/connection_failures_spec.rb#L1407)
700
+ * [never uses a fallback host](./spec/acceptance/realtime/connection_failures_spec.rb#L1417)
701
701
  * with non-production environment
702
- * [does not use a fallback host by default](./spec/acceptance/realtime/connection_failures_spec.rb#L1426)
702
+ * :fallback_hosts_use_default is unset
703
+ * [uses fallback hosts by default](./spec/acceptance/realtime/connection_failures_spec.rb#L1441)
703
704
  * :fallback_hosts_use_default is true
704
- * [uses a fallback host on every subsequent disconnected attempt until suspended (#RTN17b, #TO3k7)](./spec/acceptance/realtime/connection_failures_spec.rb#L1444)
705
- * [does not use a fallback host if the connection connects on the default host and then later becomes disconnected](./spec/acceptance/realtime/connection_failures_spec.rb#L1462)
705
+ * [uses a fallback host on every subsequent disconnected attempt until suspended (#RTN17b, #TO3k7)](./spec/acceptance/realtime/connection_failures_spec.rb#L1459)
706
+ * [does not use a fallback host if the connection connects on the default host and then later becomes disconnected](./spec/acceptance/realtime/connection_failures_spec.rb#L1477)
706
707
  * :fallback_hosts array is provided
707
- * [uses a fallback host on every subsequent disconnected attempt until suspended (#RTN17b, #TO3k6)](./spec/acceptance/realtime/connection_failures_spec.rb#L1490)
708
+ * [uses a fallback host on every subsequent disconnected attempt until suspended (#RTN17b, #TO3k6)](./spec/acceptance/realtime/connection_failures_spec.rb#L1505)
708
709
  * with production environment
709
710
  * when the Internet is down
710
- * [never uses a fallback host](./spec/acceptance/realtime/connection_failures_spec.rb#L1526)
711
+ * [never uses a fallback host](./spec/acceptance/realtime/connection_failures_spec.rb#L1541)
711
712
  * when the Internet is up
712
713
  * and default options
713
- * [uses a fallback host + the original host once on every subsequent disconnected attempt until suspended](./spec/acceptance/realtime/connection_failures_spec.rb#L1549)
714
- * [uses the primary host when suspended, and then every fallback host and the primary host again on every subsequent suspended attempt](./spec/acceptance/realtime/connection_failures_spec.rb#L1568)
715
- * [uses the correct host name for the WebSocket requests to the fallback hosts](./spec/acceptance/realtime/connection_failures_spec.rb#L1591)
714
+ * [uses a fallback host + the original host once on every subsequent disconnected attempt until suspended](./spec/acceptance/realtime/connection_failures_spec.rb#L1564)
715
+ * [uses the primary host when suspended, and then every fallback host and the primary host again on every subsequent suspended attempt](./spec/acceptance/realtime/connection_failures_spec.rb#L1583)
716
+ * [uses the correct host name for the WebSocket requests to the fallback hosts](./spec/acceptance/realtime/connection_failures_spec.rb#L1606)
716
717
  * :fallback_hosts array is provided by an empty array
717
- * [uses a fallback host on every subsequent disconnected attempt until suspended (#RTN17b, #TO3k6)](./spec/acceptance/realtime/connection_failures_spec.rb#L1621)
718
+ * [uses a fallback host on every subsequent disconnected attempt until suspended (#RTN17b, #TO3k6)](./spec/acceptance/realtime/connection_failures_spec.rb#L1636)
718
719
  * :fallback_hosts array is provided
719
- * [uses a fallback host on every subsequent disconnected attempt until suspended (#RTN17b, #TO3k6)](./spec/acceptance/realtime/connection_failures_spec.rb#L1641)
720
+ * [uses a fallback host on every subsequent disconnected attempt until suspended (#RTN17b, #TO3k6)](./spec/acceptance/realtime/connection_failures_spec.rb#L1656)
720
721
 
721
722
  ### Ably::Realtime::Connection
722
723
  _(see [spec/acceptance/realtime/connection_spec.rb](./spec/acceptance/realtime/connection_spec.rb))_
@@ -737,7 +738,7 @@ _(see [spec/acceptance/realtime/connection_spec.rb](./spec/acceptance/realtime/c
737
738
  * opening a new connection
738
739
  * with almost expired tokens
739
740
  * [renews token every time after it expires](./spec/acceptance/realtime/connection_spec.rb#L106)
740
- * with immediately expired token
741
+ * with immediately expired token and no fallback hosts
741
742
  * [renews the token on connect, and makes one immediate subsequent attempt to obtain a new token (#RSA4b)](./spec/acceptance/realtime/connection_spec.rb#L136)
742
743
  * when disconnected_retry_timeout is 0.5 seconds
743
744
  * [renews the token on connect, and continues to attempt renew based on the retry schedule](./spec/acceptance/realtime/connection_spec.rb#L151)
@@ -769,176 +770,176 @@ _(see [spec/acceptance/realtime/connection_spec.rb](./spec/acceptance/realtime/c
769
770
  * [are emitted in order](./spec/acceptance/realtime/connection_spec.rb#L431)
770
771
  * with explicit #connect
771
772
  * [are emitted in order](./spec/acceptance/realtime/connection_spec.rb#L437)
772
- * #connect
773
- * [returns a SafeDeferrable that catches exceptions in callbacks and logs them](./spec/acceptance/realtime/connection_spec.rb#L445)
774
- * [calls the Deferrable callback on success](./spec/acceptance/realtime/connection_spec.rb#L450)
775
- * [calls the provided block on success even if state changes to disconnected first](./spec/acceptance/realtime/connection_spec.rb#L457)
773
+ * #connect with no fallbacks
774
+ * [returns a SafeDeferrable that catches exceptions in callbacks and logs them](./spec/acceptance/realtime/connection_spec.rb#L447)
775
+ * [calls the Deferrable callback on success](./spec/acceptance/realtime/connection_spec.rb#L452)
776
+ * [calls the provided block on success even if state changes to disconnected first](./spec/acceptance/realtime/connection_spec.rb#L459)
776
777
  * with invalid auth details
777
- * [calls the Deferrable errback only once on connection failure](./spec/acceptance/realtime/connection_spec.rb#L486)
778
+ * [calls the Deferrable errback only once on connection failure](./spec/acceptance/realtime/connection_spec.rb#L488)
778
779
  * when already connected
779
- * [does nothing and no further state changes are emitted](./spec/acceptance/realtime/connection_spec.rb#L502)
780
+ * [does nothing and no further state changes are emitted](./spec/acceptance/realtime/connection_spec.rb#L504)
780
781
  * connection#id
781
- * [is null before connecting](./spec/acceptance/realtime/connection_spec.rb#L516)
782
+ * [is null before connecting](./spec/acceptance/realtime/connection_spec.rb#L518)
782
783
  * connection#key
783
- * [is null before connecting](./spec/acceptance/realtime/connection_spec.rb#L523)
784
+ * [is null before connecting](./spec/acceptance/realtime/connection_spec.rb#L525)
784
785
  * once connected
785
786
  * connection#id
786
- * [is a string](./spec/acceptance/realtime/connection_spec.rb#L534)
787
- * [is unique from the connection#key](./spec/acceptance/realtime/connection_spec.rb#L541)
788
- * [is unique for every connection](./spec/acceptance/realtime/connection_spec.rb#L548)
787
+ * [is a string](./spec/acceptance/realtime/connection_spec.rb#L536)
788
+ * [is unique from the connection#key](./spec/acceptance/realtime/connection_spec.rb#L543)
789
+ * [is unique for every connection](./spec/acceptance/realtime/connection_spec.rb#L550)
789
790
  * connection#key
790
- * [is a string](./spec/acceptance/realtime/connection_spec.rb#L557)
791
- * [is unique from the connection#id](./spec/acceptance/realtime/connection_spec.rb#L564)
792
- * [is unique for every connection](./spec/acceptance/realtime/connection_spec.rb#L571)
791
+ * [is a string](./spec/acceptance/realtime/connection_spec.rb#L559)
792
+ * [is unique from the connection#id](./spec/acceptance/realtime/connection_spec.rb#L566)
793
+ * [is unique for every connection](./spec/acceptance/realtime/connection_spec.rb#L573)
793
794
  * following a previous connection being opened and closed
794
- * [reconnects and is provided with a new connection ID and connection key from the server](./spec/acceptance/realtime/connection_spec.rb#L581)
795
+ * [reconnects and is provided with a new connection ID and connection key from the server](./spec/acceptance/realtime/connection_spec.rb#L583)
795
796
  * when closing
796
- * [fails the deferrable before the connection is closed](./spec/acceptance/realtime/connection_spec.rb#L598)
797
+ * [fails the deferrable before the connection is closed](./spec/acceptance/realtime/connection_spec.rb#L600)
797
798
  * #serial connection serial
798
- * [is set to -1 when a new connection is opened](./spec/acceptance/realtime/connection_spec.rb#L615)
799
- * [is set to 0 when a message is received back](./spec/acceptance/realtime/connection_spec.rb#L638)
800
- * [is set to 1 when the second message is received](./spec/acceptance/realtime/connection_spec.rb#L646)
799
+ * [is set to -1 when a new connection is opened](./spec/acceptance/realtime/connection_spec.rb#L617)
800
+ * FAILED: ~~[is set to 0 when a message is received back](./spec/acceptance/realtime/connection_spec.rb#L640)~~
801
+ * [is set to 1 when the second message is received](./spec/acceptance/realtime/connection_spec.rb#L648)
801
802
  * when a message is sent but the ACK has not yet been received
802
- * [the sent message msgSerial is 0 but the connection serial remains at -1](./spec/acceptance/realtime/connection_spec.rb#L623)
803
+ * [the sent message msgSerial is 0 but the connection serial remains at -1](./spec/acceptance/realtime/connection_spec.rb#L625)
803
804
  * #msgSerial
804
805
  * when messages are queued for publish before a connection is established
805
- * [the msgSerial is always incrementing (and not reset when the new connection is established) ensuring messages are never de-duped by the realtime service](./spec/acceptance/realtime/connection_spec.rb#L674)
806
+ * [the msgSerial is always incrementing (and not reset when the new connection is established) ensuring messages are never de-duped by the realtime service](./spec/acceptance/realtime/connection_spec.rb#L676)
806
807
  * #close
807
- * [returns a SafeDeferrable that catches exceptions in callbacks and logs them](./spec/acceptance/realtime/connection_spec.rb#L694)
808
- * [calls the Deferrable callback on success](./spec/acceptance/realtime/connection_spec.rb#L701)
808
+ * [returns a SafeDeferrable that catches exceptions in callbacks and logs them](./spec/acceptance/realtime/connection_spec.rb#L696)
809
+ * [calls the Deferrable callback on success](./spec/acceptance/realtime/connection_spec.rb#L703)
809
810
  * when already closed
810
- * [does nothing and no further state changes are emitted](./spec/acceptance/realtime/connection_spec.rb#L712)
811
+ * [does nothing and no further state changes are emitted](./spec/acceptance/realtime/connection_spec.rb#L714)
811
812
  * when connection state is
812
813
  * :initialized
813
- * [changes the connection state to :closing and then immediately :closed without sending a ProtocolMessage CLOSE](./spec/acceptance/realtime/connection_spec.rb#L739)
814
+ * [changes the connection state to :closing and then immediately :closed without sending a ProtocolMessage CLOSE](./spec/acceptance/realtime/connection_spec.rb#L741)
814
815
  * :connected
815
- * [changes the connection state to :closing and waits for the server to confirm connection is :closed with a ProtocolMessage](./spec/acceptance/realtime/connection_spec.rb#L756)
816
+ * [changes the connection state to :closing and waits for the server to confirm connection is :closed with a ProtocolMessage](./spec/acceptance/realtime/connection_spec.rb#L758)
816
817
  * with an unresponsive connection
817
- * [force closes the connection when a :closed ProtocolMessage response is not received](./spec/acceptance/realtime/connection_spec.rb#L783)
818
+ * [force closes the connection when a :closed ProtocolMessage response is not received](./spec/acceptance/realtime/connection_spec.rb#L785)
818
819
  * #ping
819
- * [echoes a heart beat (#RTN13a)](./spec/acceptance/realtime/connection_spec.rb#L805)
820
- * [sends a unique ID in each protocol message (#RTN13e)](./spec/acceptance/realtime/connection_spec.rb#L815)
821
- * [waits until the connection becomes CONNECTED when in the CONNETING state](./spec/acceptance/realtime/connection_spec.rb#L839)
820
+ * [echoes a heart beat (#RTN13a)](./spec/acceptance/realtime/connection_spec.rb#L807)
821
+ * [sends a unique ID in each protocol message (#RTN13e)](./spec/acceptance/realtime/connection_spec.rb#L817)
822
+ * [waits until the connection becomes CONNECTED when in the CONNETING state](./spec/acceptance/realtime/connection_spec.rb#L841)
822
823
  * with incompatible states
823
824
  * when not connected
824
- * [fails the deferrable (#RTN13b)](./spec/acceptance/realtime/connection_spec.rb#L852)
825
+ * [fails the deferrable (#RTN13b)](./spec/acceptance/realtime/connection_spec.rb#L854)
825
826
  * when suspended
826
- * [fails the deferrable (#RTN13b)](./spec/acceptance/realtime/connection_spec.rb#L861)
827
+ * [fails the deferrable (#RTN13b)](./spec/acceptance/realtime/connection_spec.rb#L863)
827
828
  * when failed
828
- * [fails the deferrable (#RTN13b)](./spec/acceptance/realtime/connection_spec.rb#L873)
829
+ * [fails the deferrable (#RTN13b)](./spec/acceptance/realtime/connection_spec.rb#L875)
829
830
  * when closed
830
- * [fails the deferrable (#RTN13b)](./spec/acceptance/realtime/connection_spec.rb#L885)
831
+ * [fails the deferrable (#RTN13b)](./spec/acceptance/realtime/connection_spec.rb#L887)
831
832
  * when it becomes closed
832
- * [fails the deferrable (#RTN13b)](./spec/acceptance/realtime/connection_spec.rb#L899)
833
+ * [fails the deferrable (#RTN13b)](./spec/acceptance/realtime/connection_spec.rb#L901)
833
834
  * with a success block that raises an exception
834
- * [catches the exception and logs the error](./spec/acceptance/realtime/connection_spec.rb#L912)
835
+ * [catches the exception and logs the error](./spec/acceptance/realtime/connection_spec.rb#L914)
835
836
  * when ping times out
836
- * [fails the deferrable logs a warning (#RTN13a, #RTN13c)](./spec/acceptance/realtime/connection_spec.rb#L926)
837
- * [yields to the block with a nil value](./spec/acceptance/realtime/connection_spec.rb#L945)
837
+ * [fails the deferrable logs a warning (#RTN13a, #RTN13c)](./spec/acceptance/realtime/connection_spec.rb#L928)
838
+ * [yields to the block with a nil value](./spec/acceptance/realtime/connection_spec.rb#L947)
838
839
  * Heartbeats (#RTN23)
839
840
  * heartbeat interval
840
841
  * when reduced artificially
841
- * [is the sum of the max_idle_interval and realtime_request_timeout (#RTN23a)](./spec/acceptance/realtime/connection_spec.rb#L972)
842
- * [disconnects the transport if no heartbeat received since connected (#RTN23a)](./spec/acceptance/realtime/connection_spec.rb#L982)
843
- * [disconnects the transport if no heartbeat received since last event received (#RTN23a)](./spec/acceptance/realtime/connection_spec.rb#L993)
842
+ * [is the sum of the max_idle_interval and realtime_request_timeout (#RTN23a)](./spec/acceptance/realtime/connection_spec.rb#L974)
843
+ * [disconnects the transport if no heartbeat received since connected (#RTN23a)](./spec/acceptance/realtime/connection_spec.rb#L984)
844
+ * [disconnects the transport if no heartbeat received since last event received (#RTN23a)](./spec/acceptance/realtime/connection_spec.rb#L995)
844
845
  * transport-level heartbeats are supported in the websocket transport
845
- * [provides the heartbeats argument in the websocket connection params (#RTN23b)](./spec/acceptance/realtime/connection_spec.rb#L1008)
846
- * [receives websocket heartbeat messages (#RTN23b) [slow test as need to wait for heartbeat]](./spec/acceptance/realtime/connection_spec.rb#L1017)
846
+ * [provides the heartbeats argument in the websocket connection params (#RTN23b)](./spec/acceptance/realtime/connection_spec.rb#L1010)
847
+ * [receives websocket heartbeat messages (#RTN23b) [slow test as need to wait for heartbeat]](./spec/acceptance/realtime/connection_spec.rb#L1019)
847
848
  * with websocket heartbeats disabled (undocumented)
848
- * [does not provide the heartbeats argument in the websocket connection params (#RTN23b)](./spec/acceptance/realtime/connection_spec.rb#L1033)
849
- * [receives websocket protocol messages (#RTN23b) [slow test as need to wait for heartbeat]](./spec/acceptance/realtime/connection_spec.rb#L1042)
849
+ * [does not provide the heartbeats argument in the websocket connection params (#RTN23b)](./spec/acceptance/realtime/connection_spec.rb#L1035)
850
+ * [receives websocket protocol messages (#RTN23b) [slow test as need to wait for heartbeat]](./spec/acceptance/realtime/connection_spec.rb#L1044)
850
851
  * #details
851
- * [is nil before connected](./spec/acceptance/realtime/connection_spec.rb#L1060)
852
- * [contains the ConnectionDetails object once connected (#RTN21)](./spec/acceptance/realtime/connection_spec.rb#L1067)
853
- * [contains the new ConnectionDetails object once a subsequent connection is created (#RTN21)](./spec/acceptance/realtime/connection_spec.rb#L1076)
852
+ * [is nil before connected](./spec/acceptance/realtime/connection_spec.rb#L1062)
853
+ * [contains the ConnectionDetails object once connected (#RTN21)](./spec/acceptance/realtime/connection_spec.rb#L1069)
854
+ * [contains the new ConnectionDetails object once a subsequent connection is created (#RTN21)](./spec/acceptance/realtime/connection_spec.rb#L1078)
854
855
  * with a different default connection_state_ttl
855
- * [updates the private Connection#connection_state_ttl when received from Ably in ConnectionDetails](./spec/acceptance/realtime/connection_spec.rb#L1097)
856
+ * [updates the private Connection#connection_state_ttl when received from Ably in ConnectionDetails](./spec/acceptance/realtime/connection_spec.rb#L1099)
856
857
  * recovery
857
858
  * #recovery_key
858
- * [is composed of connection key and serial that is kept up to date with each message ACK received](./spec/acceptance/realtime/connection_spec.rb#L1134)
859
- * [is available when connection is in one of the states: connecting, connected, disconnected](./spec/acceptance/realtime/connection_spec.rb#L1162)
860
- * [is nil when connection is explicitly CLOSED](./spec/acceptance/realtime/connection_spec.rb#L1191)
859
+ * [is composed of connection key and serial that is kept up to date with each message ACK received](./spec/acceptance/realtime/connection_spec.rb#L1136)
860
+ * [is available when connection is in one of the states: connecting, connected, disconnected](./spec/acceptance/realtime/connection_spec.rb#L1164)
861
+ * [is nil when connection is explicitly CLOSED](./spec/acceptance/realtime/connection_spec.rb#L1194)
861
862
  * opening a new connection using a recently disconnected connection's #recovery_key
862
863
  * connection#id after recovery
863
- * [remains the same](./spec/acceptance/realtime/connection_spec.rb#L1203)
864
+ * [remains the same](./spec/acceptance/realtime/connection_spec.rb#L1206)
864
865
  * when messages have been sent whilst the old connection is disconnected
865
866
  * the new connection
866
- * [recovers server-side queued messages](./spec/acceptance/realtime/connection_spec.rb#L1239)
867
+ * [recovers server-side queued messages](./spec/acceptance/realtime/connection_spec.rb#L1242)
867
868
  * when messages have been published
868
869
  * the new connection
869
- * [uses the correct msgSerial from the old connection](./spec/acceptance/realtime/connection_spec.rb#L1268)
870
+ * [uses the correct msgSerial from the old connection](./spec/acceptance/realtime/connection_spec.rb#L1271)
870
871
  * when messages are published before the new connection is recovered
871
872
  * the new connection
872
- * [uses the correct msgSerial from the old connection for the queued messages](./spec/acceptance/realtime/connection_spec.rb#L1298)
873
+ * [uses the correct msgSerial from the old connection for the queued messages](./spec/acceptance/realtime/connection_spec.rb#L1301)
873
874
  * with :recover option
874
875
  * with invalid syntax
875
- * [raises an exception](./spec/acceptance/realtime/connection_spec.rb#L1345)
876
+ * [raises an exception](./spec/acceptance/realtime/connection_spec.rb#L1348)
876
877
  * with invalid formatted value sent to server
877
- * [sets the #error_reason and moves the connection to FAILED](./spec/acceptance/realtime/connection_spec.rb#L1354)
878
+ * [sets the #error_reason and moves the connection to FAILED](./spec/acceptance/realtime/connection_spec.rb#L1357)
878
879
  * with expired (missing) value sent to server
879
- * [connects but sets the error reason and includes the reason in the state change](./spec/acceptance/realtime/connection_spec.rb#L1369)
880
+ * [connects but sets the error reason and includes the reason in the state change](./spec/acceptance/realtime/connection_spec.rb#L1372)
880
881
  * with many connections simultaneously
881
- * [opens each with a unique connection#id and connection#key](./spec/acceptance/realtime/connection_spec.rb#L1388)
882
+ * [opens each with a unique connection#id and connection#key](./spec/acceptance/realtime/connection_spec.rb#L1391)
882
883
  * when a state transition is unsupported
883
- * [logs the invalid state change as fatal](./spec/acceptance/realtime/connection_spec.rb#L1408)
884
+ * [logs the invalid state change as fatal](./spec/acceptance/realtime/connection_spec.rb#L1411)
884
885
  * protocol failure
885
886
  * receiving an invalid ProtocolMessage
886
- * [emits an error on the connection and logs a fatal error message](./spec/acceptance/realtime/connection_spec.rb#L1424)
887
+ * [emits an error on the connection and logs a fatal error message](./spec/acceptance/realtime/connection_spec.rb#L1427)
887
888
  * undocumented method
888
889
  * #internet_up?
889
- * [returns a Deferrable](./spec/acceptance/realtime/connection_spec.rb#L1442)
890
+ * [returns a Deferrable](./spec/acceptance/realtime/connection_spec.rb#L1445)
890
891
  * internet up URL protocol
891
892
  * when using TLS for the connection
892
- * [uses TLS for the Internet check to https://internet-up.ably-realtime.com/is-the-internet-up.txt](./spec/acceptance/realtime/connection_spec.rb#L1453)
893
+ * [uses TLS for the Internet check to https://internet-up.ably-realtime.com/is-the-internet-up.txt](./spec/acceptance/realtime/connection_spec.rb#L1456)
893
894
  * when using a non-secured connection
894
- * [uses TLS for the Internet check to http://internet-up.ably-realtime.com/is-the-internet-up.txt](./spec/acceptance/realtime/connection_spec.rb#L1463)
895
+ * [uses TLS for the Internet check to http://internet-up.ably-realtime.com/is-the-internet-up.txt](./spec/acceptance/realtime/connection_spec.rb#L1466)
895
896
  * when the Internet is up
896
- * [calls the block with true](./spec/acceptance/realtime/connection_spec.rb#L1494)
897
- * [calls the success callback of the Deferrable](./spec/acceptance/realtime/connection_spec.rb#L1501)
897
+ * [calls the block with true](./spec/acceptance/realtime/connection_spec.rb#L1497)
898
+ * [calls the success callback of the Deferrable](./spec/acceptance/realtime/connection_spec.rb#L1504)
898
899
  * with a TLS connection
899
- * [checks the Internet up URL over TLS](./spec/acceptance/realtime/connection_spec.rb#L1477)
900
+ * [checks the Internet up URL over TLS](./spec/acceptance/realtime/connection_spec.rb#L1480)
900
901
  * with a non-TLS connection
901
- * [checks the Internet up URL over TLS](./spec/acceptance/realtime/connection_spec.rb#L1487)
902
+ * [checks the Internet up URL over TLS](./spec/acceptance/realtime/connection_spec.rb#L1490)
902
903
  * when the Internet is down
903
- * [calls the block with false](./spec/acceptance/realtime/connection_spec.rb#L1516)
904
- * [calls the failure callback of the Deferrable](./spec/acceptance/realtime/connection_spec.rb#L1523)
904
+ * [calls the block with false](./spec/acceptance/realtime/connection_spec.rb#L1519)
905
+ * [calls the failure callback of the Deferrable](./spec/acceptance/realtime/connection_spec.rb#L1526)
905
906
  * state change side effects
906
907
  * when connection enters the :disconnected state
907
- * [queues messages to be sent and all channels remain attached](./spec/acceptance/realtime/connection_spec.rb#L1537)
908
+ * [queues messages to be sent and all channels remain attached](./spec/acceptance/realtime/connection_spec.rb#L1540)
908
909
  * when connection enters the :suspended state
909
- * [moves the channels into the suspended state and prevents publishing of messages on those channels](./spec/acceptance/realtime/connection_spec.rb#L1570)
910
+ * [moves the channels into the suspended state and prevents publishing of messages on those channels](./spec/acceptance/realtime/connection_spec.rb#L1573)
910
911
  * when connection enters the :failed state
911
- * [sets all channels to failed and prevents publishing of messages on those channels](./spec/acceptance/realtime/connection_spec.rb#L1601)
912
+ * [sets all channels to failed and prevents publishing of messages on those channels](./spec/acceptance/realtime/connection_spec.rb#L1604)
912
913
  * connection state change
913
- * [emits event to all and single subscribers](./spec/acceptance/realtime/connection_spec.rb#L1615)
914
- * [emits a ConnectionStateChange object](./spec/acceptance/realtime/connection_spec.rb#L1630)
914
+ * [emits event to all and single subscribers](./spec/acceptance/realtime/connection_spec.rb#L1618)
915
+ * [emits a ConnectionStateChange object](./spec/acceptance/realtime/connection_spec.rb#L1633)
915
916
  * ConnectionStateChange object
916
- * [has current state](./spec/acceptance/realtime/connection_spec.rb#L1638)
917
- * [has a previous state](./spec/acceptance/realtime/connection_spec.rb#L1646)
918
- * [has the event that generated the state change (#TH5)](./spec/acceptance/realtime/connection_spec.rb#L1654)
919
- * [has an empty reason when there is no error](./spec/acceptance/realtime/connection_spec.rb#L1670)
917
+ * [has current state](./spec/acceptance/realtime/connection_spec.rb#L1641)
918
+ * [has a previous state](./spec/acceptance/realtime/connection_spec.rb#L1649)
919
+ * [has the event that generated the state change (#TH5)](./spec/acceptance/realtime/connection_spec.rb#L1657)
920
+ * [has an empty reason when there is no error](./spec/acceptance/realtime/connection_spec.rb#L1673)
920
921
  * on failure
921
- * [has a reason Error object when there is an error on the connection](./spec/acceptance/realtime/connection_spec.rb#L1683)
922
+ * [has a reason Error object when there is an error on the connection](./spec/acceptance/realtime/connection_spec.rb#L1686)
922
923
  * retry_in
923
- * [is nil when a retry is not required](./spec/acceptance/realtime/connection_spec.rb#L1698)
924
- * [is 0 when first attempt to connect fails](./spec/acceptance/realtime/connection_spec.rb#L1705)
925
- * [is 0 when an immediate reconnect will occur](./spec/acceptance/realtime/connection_spec.rb#L1715)
926
- * [contains the next retry period when an immediate reconnect will not occur](./spec/acceptance/realtime/connection_spec.rb#L1725)
924
+ * [is nil when a retry is not required](./spec/acceptance/realtime/connection_spec.rb#L1701)
925
+ * [is 0 when first attempt to connect fails](./spec/acceptance/realtime/connection_spec.rb#L1708)
926
+ * [is 0 when an immediate reconnect will occur](./spec/acceptance/realtime/connection_spec.rb#L1718)
927
+ * [contains the next retry period when an immediate reconnect will not occur](./spec/acceptance/realtime/connection_spec.rb#L1728)
927
928
  * whilst CONNECTED
928
929
  * when a CONNECTED message is received (#RTN24)
929
- * [emits an UPDATE event](./spec/acceptance/realtime/connection_spec.rb#L1760)
930
- * [updates the ConnectionDetail and Connection attributes (#RTC8a1)](./spec/acceptance/realtime/connection_spec.rb#L1775)
930
+ * [emits an UPDATE event](./spec/acceptance/realtime/connection_spec.rb#L1763)
931
+ * [updates the ConnectionDetail and Connection attributes (#RTC8a1)](./spec/acceptance/realtime/connection_spec.rb#L1778)
931
932
  * when a CONNECTED message with an error is received
932
- * [emits an UPDATE event](./spec/acceptance/realtime/connection_spec.rb#L1810)
933
+ * [emits an UPDATE event](./spec/acceptance/realtime/connection_spec.rb#L1813)
933
934
  * version params
934
- * [sends the protocol version param v (#G4, #RTN2f)](./spec/acceptance/realtime/connection_spec.rb#L1831)
935
- * [sends the lib version param lib (#RTN2g)](./spec/acceptance/realtime/connection_spec.rb#L1840)
935
+ * [sends the protocol version param v (#G4, #RTN2f)](./spec/acceptance/realtime/connection_spec.rb#L1834)
936
+ * [sends the lib version param lib (#RTN2g)](./spec/acceptance/realtime/connection_spec.rb#L1843)
936
937
  * with variant
937
- * [sends the lib version param lib with the variant (#RTN2g + #RSC7b)](./spec/acceptance/realtime/connection_spec.rb#L1860)
938
+ * [sends the lib version param lib with the variant (#RTN2g + #RSC7b)](./spec/acceptance/realtime/connection_spec.rb#L1863)
938
939
  * transport_params (#RTC1f)
939
- * [pases transport_params to query](./spec/acceptance/realtime/connection_spec.rb#L1874)
940
+ * [pases transport_params to query](./spec/acceptance/realtime/connection_spec.rb#L1877)
940
941
  * when changing default param
941
- * [overrides default param (#RTC1f1)](./spec/acceptance/realtime/connection_spec.rb#L1887)
942
+ * [overrides default param (#RTC1f1)](./spec/acceptance/realtime/connection_spec.rb#L1890)
942
943
 
943
944
  ### Ably::Realtime::Channel Message
944
945
  _(see [spec/acceptance/realtime/message_spec.rb](./spec/acceptance/realtime/message_spec.rb))_
@@ -1579,7 +1580,7 @@ _(see [spec/acceptance/realtime/presence_spec.rb](./spec/acceptance/realtime/pre
1579
1580
  * local PresenceMap for presence members entered by this client
1580
1581
  * [maintains a copy of the member map for any member that shares this connection's connection ID (#RTP17)](./spec/acceptance/realtime/presence_spec.rb#L2427)
1581
1582
  * #RTP17b
1582
- * FAILED: ~~[updates presence members on leave](./spec/acceptance/realtime/presence_spec.rb#L2455)~~
1583
+ * [updates presence members on leave](./spec/acceptance/realtime/presence_spec.rb#L2455)
1583
1584
  * [does no update presence members on fabricated leave](./spec/acceptance/realtime/presence_spec.rb#L2480)
1584
1585
  * when a channel becomes attached again
1585
1586
  * and the resume flag is true
@@ -1909,14 +1910,14 @@ _(see [spec/acceptance/rest/base_spec.rb](./spec/acceptance/rest/base_spec.rb))_
1909
1910
  * due to invalid Auth
1910
1911
  * [should raise an InvalidRequest exception with a valid error message and code](./spec/acceptance/rest/base_spec.rb#L75)
1911
1912
  * server error with JSON error response body
1912
- * [should raise a ServerError exception](./spec/acceptance/rest/base_spec.rb#L94)
1913
+ * [should raise a ServerError exception](./spec/acceptance/rest/base_spec.rb#L96)
1913
1914
  * 500 server error without a valid JSON response body
1914
- * [should raise a ServerError exception](./spec/acceptance/rest/base_spec.rb#L105)
1915
+ * [should raise a ServerError exception](./spec/acceptance/rest/base_spec.rb#L109)
1915
1916
  * token authentication failures
1916
1917
  * when auth#token_renewable?
1917
- * [should automatically reissue a token](./spec/acceptance/rest/base_spec.rb#L143)
1918
+ * [should automatically reissue a token](./spec/acceptance/rest/base_spec.rb#L147)
1918
1919
  * when NOT auth#token_renewable?
1919
- * [should raise an TokenExpired exception](./spec/acceptance/rest/base_spec.rb#L158)
1920
+ * [should raise an TokenExpired exception](./spec/acceptance/rest/base_spec.rb#L162)
1920
1921
 
1921
1922
  ### Ably::Rest::Channel
1922
1923
  _(see [spec/acceptance/rest/channel_spec.rb](./spec/acceptance/rest/channel_spec.rb))_
@@ -2099,121 +2100,126 @@ _(see [spec/acceptance/rest/client_spec.rb](./spec/acceptance/rest/client_spec.r
2099
2100
  * [is configured to timeout connection requests in 10 seconds](./spec/acceptance/rest/client_spec.rb#L290)
2100
2101
  * fallback hosts
2101
2102
  * configured
2102
- * [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 (#RSC15a)](./spec/acceptance/rest/client_spec.rb#L304)
2103
+ * [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 (#RSC15a)](./spec/acceptance/rest/client_spec.rb#L304)
2103
2104
  * when environment is NOT production (#RSC15b)
2104
- * [does not retry failed requests with fallback hosts when there is a connection error](./spec/acceptance/rest/client_spec.rb#L321)
2105
+ * and custom fallback hosts are empty
2106
+ * [does not retry failed requests with fallback hosts when there is a connection error](./spec/acceptance/rest/client_spec.rb#L322)
2107
+ * and no custom fallback hosts are provided
2108
+ * [should make connection attempts to sandbox-a-fallback.ably-realtime.com, sandbox-b-fallback.ably-realtime.com, sandbox-c-fallback.ably-realtime.com, sandbox-d-fallback.ably-realtime.com, sandbox-e-fallback.ably-realtime.com (#RSC15a)](./spec/acceptance/rest/client_spec.rb#L330)
2105
2109
  * when environment is production
2106
2110
  * and connection times out
2107
- * [tries fallback hosts 3 times (#RSC15b, #RSC15b)](./spec/acceptance/rest/client_spec.rb#L360)
2111
+ * [tries fallback hosts 3 times (#RSC15b, #RSC15b)](./spec/acceptance/rest/client_spec.rb#L374)
2108
2112
  * and the total request time exeeds 15 seconds
2109
- * [makes no further attempts to any fallback hosts](./spec/acceptance/rest/client_spec.rb#L375)
2113
+ * [makes no further attempts to any fallback hosts](./spec/acceptance/rest/client_spec.rb#L389)
2110
2114
  * and connection fails
2111
- * [tries fallback hosts 3 times](./spec/acceptance/rest/client_spec.rb#L391)
2115
+ * [tries fallback hosts 3 times](./spec/acceptance/rest/client_spec.rb#L405)
2112
2116
  * and first request to primary endpoint fails
2113
- * [tries a fallback host, and for the next request tries the primary endpoint again (#RSC15e)](./spec/acceptance/rest/client_spec.rb#L425)
2117
+ * [tries a fallback host, and for the next request tries the primary endpoint again (#RSC15e)](./spec/acceptance/rest/client_spec.rb#L439)
2114
2118
  * and basic authentication fails
2115
- * [does not attempt the fallback hosts as this is an authentication failure](./spec/acceptance/rest/client_spec.rb#L452)
2119
+ * [does not attempt the fallback hosts as this is an authentication failure](./spec/acceptance/rest/client_spec.rb#L466)
2116
2120
  * and server returns a 50x error
2117
- * [attempts the fallback hosts as this is an authentication failure (#RSC15d)](./spec/acceptance/rest/client_spec.rb#L474)
2121
+ * [attempts the fallback hosts as this is an authentication failure (#RSC15d)](./spec/acceptance/rest/client_spec.rb#L488)
2118
2122
  * when environment is production and server returns a 50x error
2119
2123
  * with custom fallback hosts provided
2120
- * [attempts the fallback hosts as this is an authentication failure (#RSC15b, #RSC15a, #TO3k6)](./spec/acceptance/rest/client_spec.rb#L523)
2124
+ * [attempts the fallback hosts as this is an authentication failure (#RSC15b, #RSC15a, #TO3k6)](./spec/acceptance/rest/client_spec.rb#L537)
2121
2125
  * with an empty array of fallback hosts provided (#RSC15b, #RSC15a, #TO3k6)
2122
- * [does not attempt the fallback hosts as this is an authentication failure](./spec/acceptance/rest/client_spec.rb#L536)
2126
+ * [does not attempt the fallback hosts as this is an authentication failure](./spec/acceptance/rest/client_spec.rb#L550)
2123
2127
  * using a local web-server
2124
2128
  * and timing out the primary host
2125
2129
  * POST with request timeout less than max_retry_duration
2126
- * [tries the primary host, then both fallback hosts (#RSC15d)](./spec/acceptance/rest/client_spec.rb#L600)
2130
+ * [tries the primary host, then both fallback hosts (#RSC15d)](./spec/acceptance/rest/client_spec.rb#L614)
2127
2131
  * GET with request timeout less than max_retry_duration
2128
- * [tries the primary host, then both fallback hosts (#RSC15d)](./spec/acceptance/rest/client_spec.rb#L623)
2132
+ * [tries the primary host, then both fallback hosts (#RSC15d)](./spec/acceptance/rest/client_spec.rb#L637)
2129
2133
  * POST with request timeout more than max_retry_duration
2130
- * [does not try any fallback hosts (#RSC15d)](./spec/acceptance/rest/client_spec.rb#L646)
2134
+ * [does not try any fallback hosts (#RSC15d)](./spec/acceptance/rest/client_spec.rb#L660)
2131
2135
  * GET with request timeout more than max_retry_duration
2132
- * [does not try any fallback hosts (#RSC15d)](./spec/acceptance/rest/client_spec.rb#L668)
2136
+ * [does not try any fallback hosts (#RSC15d)](./spec/acceptance/rest/client_spec.rb#L682)
2133
2137
  * and failing the primary host
2134
- * [tries one of the fallback hosts](./spec/acceptance/rest/client_spec.rb#L713)
2138
+ * [tries one of the fallback hosts](./spec/acceptance/rest/client_spec.rb#L727)
2135
2139
  * to fail the primary host, allow a fallback to succeed, then later trigger a fallback to the primary host (#RSC15f)
2136
- * [succeeds and remembers fallback host preferences across requests](./spec/acceptance/rest/client_spec.rb#L769)
2140
+ * [succeeds and remembers fallback host preferences across requests](./spec/acceptance/rest/client_spec.rb#L783)
2137
2141
  * with custom :fallback_retry_timeout
2138
- * [stops using the preferred fallback after this time](./spec/acceptance/rest/client_spec.rb#L806)
2142
+ * [stops using the preferred fallback after this time](./spec/acceptance/rest/client_spec.rb#L820)
2139
2143
  * when environment is not production and server returns a 50x error
2144
+ * with no fallback hosts provided (#TBC, see https://github.com/ably/wiki/issues/361)
2145
+ * [uses the default fallback hosts for that environment as this is not an authentication failure](./spec/acceptance/rest/client_spec.rb#L874)
2140
2146
  * with custom fallback hosts provided (#RSC15b, #TO3k6)
2141
- * [attempts the fallback hosts as this is not an authentication failure](./spec/acceptance/rest/client_spec.rb#L867)
2147
+ * [attempts the fallback hosts as this is not an authentication failure](./spec/acceptance/rest/client_spec.rb#L902)
2142
2148
  * with an empty array of fallback hosts provided (#RSC15b, #TO3k6)
2143
- * [does not attempt the fallback hosts as this is an authentication failure](./spec/acceptance/rest/client_spec.rb#L880)
2149
+ * [does not attempt the fallback hosts as this is an authentication failure](./spec/acceptance/rest/client_spec.rb#L915)
2144
2150
  * with fallback_hosts_use_default: true (#RSC15b, #TO3k7)
2145
- * [attempts the default fallback hosts as this is an authentication failure](./spec/acceptance/rest/client_spec.rb#L905)
2151
+ * [attempts the default fallback hosts as this is an authentication failure](./spec/acceptance/rest/client_spec.rb#L940)
2146
2152
  * with a custom host
2147
2153
  * that does not exist
2148
- * [fails immediately and raises a Faraday Error](./spec/acceptance/rest/client_spec.rb#L921)
2154
+ * [fails immediately and raises a Faraday Error](./spec/acceptance/rest/client_spec.rb#L956)
2149
2155
  * fallback hosts
2150
- * [are never used](./spec/acceptance/rest/client_spec.rb#L942)
2156
+ * [are never used](./spec/acceptance/rest/client_spec.rb#L977)
2151
2157
  * that times out
2152
- * [fails immediately and raises a Faraday Error](./spec/acceptance/rest/client_spec.rb#L957)
2158
+ * [fails immediately and raises a Faraday Error](./spec/acceptance/rest/client_spec.rb#L992)
2153
2159
  * fallback hosts
2154
- * [are never used](./spec/acceptance/rest/client_spec.rb#L970)
2160
+ * [are never used](./spec/acceptance/rest/client_spec.rb#L1005)
2155
2161
  * HTTP configuration options
2156
- * [is frozen](./spec/acceptance/rest/client_spec.rb#L1027)
2162
+ * [is frozen](./spec/acceptance/rest/client_spec.rb#L1062)
2157
2163
  * defaults
2158
- * [#http_open_timeout is 4s](./spec/acceptance/rest/client_spec.rb#L982)
2159
- * [#http_request_timeout is 10s](./spec/acceptance/rest/client_spec.rb#L986)
2160
- * [#http_max_retry_count is 3](./spec/acceptance/rest/client_spec.rb#L990)
2161
- * [#http_max_retry_duration is 15s](./spec/acceptance/rest/client_spec.rb#L994)
2164
+ * [#http_open_timeout is 4s](./spec/acceptance/rest/client_spec.rb#L1017)
2165
+ * [#http_request_timeout is 10s](./spec/acceptance/rest/client_spec.rb#L1021)
2166
+ * [#http_max_retry_count is 3](./spec/acceptance/rest/client_spec.rb#L1025)
2167
+ * [#http_max_retry_duration is 15s](./spec/acceptance/rest/client_spec.rb#L1029)
2162
2168
  * configured
2163
- * [#http_open_timeout uses provided value](./spec/acceptance/rest/client_spec.rb#L1010)
2164
- * [#http_request_timeout uses provided value](./spec/acceptance/rest/client_spec.rb#L1014)
2165
- * [#http_max_retry_count uses provided value](./spec/acceptance/rest/client_spec.rb#L1018)
2166
- * [#http_max_retry_duration uses provided value](./spec/acceptance/rest/client_spec.rb#L1022)
2169
+ * [#http_open_timeout uses provided value](./spec/acceptance/rest/client_spec.rb#L1045)
2170
+ * [#http_request_timeout uses provided value](./spec/acceptance/rest/client_spec.rb#L1049)
2171
+ * [#http_max_retry_count uses provided value](./spec/acceptance/rest/client_spec.rb#L1053)
2172
+ * [#http_max_retry_duration uses provided value](./spec/acceptance/rest/client_spec.rb#L1057)
2167
2173
  * #auth
2168
- * [is provides access to the Auth object](./spec/acceptance/rest/client_spec.rb#L1038)
2169
- * [configures the Auth object with all ClientOptions passed to client in the initializer](./spec/acceptance/rest/client_spec.rb#L1042)
2174
+ * [is provides access to the Auth object](./spec/acceptance/rest/client_spec.rb#L1073)
2175
+ * [configures the Auth object with all ClientOptions passed to client in the initializer](./spec/acceptance/rest/client_spec.rb#L1077)
2170
2176
  * version headers
2171
2177
  * with variant none
2172
- * [sends a protocol version and lib version header (#G4, #RSC7a, #RSC7b)](./spec/acceptance/rest/client_spec.rb#L1076)
2178
+ * [sends a protocol version and lib version header (#G4, #RSC7a, #RSC7b)](./spec/acceptance/rest/client_spec.rb#L1111)
2173
2179
  * with variant foo
2174
- * [sends a protocol version and lib version header (#G4, #RSC7a, #RSC7b)](./spec/acceptance/rest/client_spec.rb#L1076)
2180
+ * [sends a protocol version and lib version header (#G4, #RSC7a, #RSC7b)](./spec/acceptance/rest/client_spec.rb#L1111)
2175
2181
  * #request (#RSC19*)
2176
2182
  * get
2177
- * [returns an HttpPaginatedResponse object](./spec/acceptance/rest/client_spec.rb#L1091)
2183
+ * [returns an HttpPaginatedResponse object](./spec/acceptance/rest/client_spec.rb#L1126)
2178
2184
  * 404 request to invalid URL
2179
- * [returns an object with 404 status code and error message](./spec/acceptance/rest/client_spec.rb#L1098)
2185
+ * [returns an object with 404 status code and error message](./spec/acceptance/rest/client_spec.rb#L1133)
2180
2186
  * paged results
2181
- * [provides paging](./spec/acceptance/rest/client_spec.rb#L1110)
2187
+ * [provides paging](./spec/acceptance/rest/client_spec.rb#L1145)
2182
2188
  * post
2183
- * [supports post](./spec/acceptance/rest/client_spec.rb#L1135)
2189
+ * [supports post](./spec/acceptance/rest/client_spec.rb#L1170)
2184
2190
  * delete
2185
- * [supports delete](./spec/acceptance/rest/client_spec.rb#L1148)
2191
+ * [supports delete](./spec/acceptance/rest/client_spec.rb#L1183)
2186
2192
  * patch
2187
- * [supports patch](./spec/acceptance/rest/client_spec.rb#L1164)
2193
+ * [supports patch](./spec/acceptance/rest/client_spec.rb#L1199)
2188
2194
  * put
2189
- * [supports put](./spec/acceptance/rest/client_spec.rb#L1187)
2195
+ * [supports put](./spec/acceptance/rest/client_spec.rb#L1222)
2190
2196
  * request_id generation
2191
2197
  * Timeout error
2192
- * with option add_request_ids: true
2193
- * [has an error with the same request_id of the request](./spec/acceptance/rest/client_spec.rb#L1210)
2198
+ * with option add_request_ids: true and no fallback hosts
2199
+ * [has an error with the same request_id of the request](./spec/acceptance/rest/client_spec.rb#L1245)
2194
2200
  * with option add_request_ids: true and REST operations with a message body
2195
2201
  * with mocks to inspect the params
2196
2202
  * with a single publish
2197
- * [succeeds and sends the request_id as a param](./spec/acceptance/rest/client_spec.rb#L1232)
2203
+ * [succeeds and sends the request_id as a param](./spec/acceptance/rest/client_spec.rb#L1267)
2198
2204
  * with an array publish
2199
- * [succeeds and sends the request_id as a param](./spec/acceptance/rest/client_spec.rb#L1239)
2205
+ * [succeeds and sends the request_id as a param](./spec/acceptance/rest/client_spec.rb#L1274)
2200
2206
  * without mocks to ensure the requests are accepted
2201
2207
  * with a single publish
2202
- * [succeeds and sends the request_id as a param](./spec/acceptance/rest/client_spec.rb#L1248)
2208
+ * [succeeds and sends the request_id as a param](./spec/acceptance/rest/client_spec.rb#L1283)
2203
2209
  * with an array publish
2204
- * [succeeds and sends the request_id as a param](./spec/acceptance/rest/client_spec.rb#L1255)
2210
+ * [succeeds and sends the request_id as a param](./spec/acceptance/rest/client_spec.rb#L1290)
2205
2211
  * option add_request_ids: true and specified fallback hosts
2206
- * [request_id is the same across retries](./spec/acceptance/rest/client_spec.rb#L1280)
2207
- * without request_id
2208
- * [does not include request_id in ConnectionTimeout error](./spec/acceptance/rest/client_spec.rb#L1292)
2212
+ * [request_id is the same across retries](./spec/acceptance/rest/client_spec.rb#L1315)
2213
+ * without request_id and no fallback hosts
2214
+ * [does not include request_id in ConnectionTimeout error](./spec/acceptance/rest/client_spec.rb#L1327)
2209
2215
  * UnauthorizedRequest nonce error
2210
- * [includes request_id in UnauthorizedRequest error due to replayed nonce](./spec/acceptance/rest/client_spec.rb#L1305)
2216
+ * [includes request_id in UnauthorizedRequest error due to replayed nonce](./spec/acceptance/rest/client_spec.rb#L1340)
2211
2217
  * failed request logging
2212
- * [is absent when requests do not fail](./spec/acceptance/rest/client_spec.rb#L1322)
2218
+ * [is absent when requests do not fail](./spec/acceptance/rest/client_spec.rb#L1357)
2213
2219
  * with the first request failing
2214
- * [is present with success message when requests do not actually fail](./spec/acceptance/rest/client_spec.rb#L1337)
2220
+ * [is present with success message when requests do not actually fail](./spec/acceptance/rest/client_spec.rb#L1372)
2215
2221
  * with all requests failing
2216
- * [is present when all requests fail](./spec/acceptance/rest/client_spec.rb#L1354)
2222
+ * [is present when all requests fail](./spec/acceptance/rest/client_spec.rb#L1389)
2217
2223
 
2218
2224
  ### Ably::Models::MessageEncoders
2219
2225
  _(see [spec/acceptance/rest/encoders_spec.rb](./spec/acceptance/rest/encoders_spec.rb))_
@@ -3847,9 +3853,40 @@ _(see [spec/unit/realtime/client_spec.rb](./spec/unit/realtime/client_spec.rb))_
3847
3853
  * with custom logger and log_level
3848
3854
  * [uses the custom logger](./spec/shared/client_initializer_behaviour.rb#L259)
3849
3855
  * [sets the custom log level](./spec/shared/client_initializer_behaviour.rb#L263)
3856
+ * environment
3857
+ * when set without custom fallback hosts configured
3858
+ * [sets the environment attribute](./spec/shared/client_initializer_behaviour.rb#L275)
3859
+ * [uses the default fallback hosts (#TBC, see https://github.com/ably/wiki/issues/361)](./spec/shared/client_initializer_behaviour.rb#L279)
3860
+ * when set with custom fallback hosts configured
3861
+ * [sets the environment attribute](./spec/shared/client_initializer_behaviour.rb#L289)
3862
+ * [uses the custom provided fallback hosts (#RSC15a)](./spec/shared/client_initializer_behaviour.rb#L293)
3863
+ * when set with fallback_hosts_use_default
3864
+ * [sets the environment attribute](./spec/shared/client_initializer_behaviour.rb#L304)
3865
+ * [uses the production default fallback hosts (#RTN17b)](./spec/shared/client_initializer_behaviour.rb#L308)
3866
+ * rest_host
3867
+ * when set without custom fallback hosts configured
3868
+ * [sets the custom_host attribute](./spec/shared/client_initializer_behaviour.rb#L319)
3869
+ * [has no default fallback hosts](./spec/shared/client_initializer_behaviour.rb#L323)
3870
+ * when set with environment and without custom fallback hosts configured
3871
+ * [sets the environment attribute](./spec/shared/client_initializer_behaviour.rb#L333)
3872
+ * [sets the custom_host attribute](./spec/shared/client_initializer_behaviour.rb#L337)
3873
+ * [has no default fallback hosts](./spec/shared/client_initializer_behaviour.rb#L341)
3874
+ * when set with custom fallback hosts configured
3875
+ * [sets the custom_host attribute](./spec/shared/client_initializer_behaviour.rb#L351)
3876
+ * [has no default fallback hosts](./spec/shared/client_initializer_behaviour.rb#L355)
3877
+ * realtime_host
3878
+ * when set without custom fallback hosts configured
3879
+ * [sets the realtime_host option](./spec/shared/client_initializer_behaviour.rb#L368)
3880
+ * [has no default fallback hosts](./spec/shared/client_initializer_behaviour.rb#L372)
3881
+ * custom port
3882
+ * when set without custom fallback hosts configured
3883
+ * [has no default fallback hosts](./spec/shared/client_initializer_behaviour.rb#L383)
3884
+ * custom TLS port
3885
+ * when set without custom fallback hosts configured
3886
+ * [has no default fallback hosts](./spec/shared/client_initializer_behaviour.rb#L394)
3850
3887
  * delegators
3851
- * [delegates :client_id to .auth](./spec/shared/client_initializer_behaviour.rb#L277)
3852
- * [delegates :auth_options to .auth](./spec/shared/client_initializer_behaviour.rb#L282)
3888
+ * [delegates :client_id to .auth](./spec/shared/client_initializer_behaviour.rb#L408)
3889
+ * [delegates :auth_options to .auth](./spec/shared/client_initializer_behaviour.rb#L413)
3853
3890
  * delegation to the REST Client
3854
3891
  * [passes on the options to the initializer](./spec/unit/realtime/client_spec.rb#L15)
3855
3892
  * for attribute
@@ -4055,9 +4092,40 @@ _(see [spec/unit/rest/client_spec.rb](./spec/unit/rest/client_spec.rb))_
4055
4092
  * with custom logger and log_level
4056
4093
  * [uses the custom logger](./spec/shared/client_initializer_behaviour.rb#L259)
4057
4094
  * [sets the custom log level](./spec/shared/client_initializer_behaviour.rb#L263)
4095
+ * environment
4096
+ * when set without custom fallback hosts configured
4097
+ * [sets the environment attribute](./spec/shared/client_initializer_behaviour.rb#L275)
4098
+ * [uses the default fallback hosts (#TBC, see https://github.com/ably/wiki/issues/361)](./spec/shared/client_initializer_behaviour.rb#L279)
4099
+ * when set with custom fallback hosts configured
4100
+ * [sets the environment attribute](./spec/shared/client_initializer_behaviour.rb#L289)
4101
+ * [uses the custom provided fallback hosts (#RSC15a)](./spec/shared/client_initializer_behaviour.rb#L293)
4102
+ * when set with fallback_hosts_use_default
4103
+ * [sets the environment attribute](./spec/shared/client_initializer_behaviour.rb#L304)
4104
+ * [uses the production default fallback hosts (#RTN17b)](./spec/shared/client_initializer_behaviour.rb#L308)
4105
+ * rest_host
4106
+ * when set without custom fallback hosts configured
4107
+ * [sets the custom_host attribute](./spec/shared/client_initializer_behaviour.rb#L319)
4108
+ * [has no default fallback hosts](./spec/shared/client_initializer_behaviour.rb#L323)
4109
+ * when set with environment and without custom fallback hosts configured
4110
+ * [sets the environment attribute](./spec/shared/client_initializer_behaviour.rb#L333)
4111
+ * [sets the custom_host attribute](./spec/shared/client_initializer_behaviour.rb#L337)
4112
+ * [has no default fallback hosts](./spec/shared/client_initializer_behaviour.rb#L341)
4113
+ * when set with custom fallback hosts configured
4114
+ * [sets the custom_host attribute](./spec/shared/client_initializer_behaviour.rb#L351)
4115
+ * [has no default fallback hosts](./spec/shared/client_initializer_behaviour.rb#L355)
4116
+ * realtime_host
4117
+ * when set without custom fallback hosts configured
4118
+ * [sets the realtime_host option](./spec/shared/client_initializer_behaviour.rb#L368)
4119
+ * [has no default fallback hosts](./spec/shared/client_initializer_behaviour.rb#L372)
4120
+ * custom port
4121
+ * when set without custom fallback hosts configured
4122
+ * [has no default fallback hosts](./spec/shared/client_initializer_behaviour.rb#L383)
4123
+ * custom TLS port
4124
+ * when set without custom fallback hosts configured
4125
+ * [has no default fallback hosts](./spec/shared/client_initializer_behaviour.rb#L394)
4058
4126
  * delegators
4059
- * [delegates :client_id to .auth](./spec/shared/client_initializer_behaviour.rb#L277)
4060
- * [delegates :auth_options to .auth](./spec/shared/client_initializer_behaviour.rb#L282)
4127
+ * [delegates :client_id to .auth](./spec/shared/client_initializer_behaviour.rb#L408)
4128
+ * [delegates :auth_options to .auth](./spec/shared/client_initializer_behaviour.rb#L413)
4061
4129
  * initializer options
4062
4130
  * TLS
4063
4131
  * disabled
@@ -4145,6 +4213,6 @@ _(see [spec/unit/util/pub_sub_spec.rb](./spec/unit/util/pub_sub_spec.rb))_
4145
4213
 
4146
4214
  ## Test summary
4147
4215
 
4148
- * Passing tests: 2073
4216
+ * Passing tests: 2109
4149
4217
  * Pending tests: 5
4150
4218
  * Failing tests: 1