ably-rest 1.1.4 → 1.1.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 59842f1a0a75ab131a1af2714d6704094c3c3a035a31b74516d00251df41439b
4
- data.tar.gz: 26695916c25bd63adde7c9c42de9dd037f6153d9317a7b3a9545ed31572f13f1
3
+ metadata.gz: a2b6fd3fc81fb06d352eef9e43f27bfdfdba8db888383f03e3a6390eda86d14e
4
+ data.tar.gz: 908e757e92eb752bfd995f599f7d45213c7065e8802b5d1c7cbddf1bb8c800a0
5
5
  SHA512:
6
- metadata.gz: 8e9ddaa69b29f548a9c938b92ab318c03ba77b8cc96c5ba1eb9742f8d3351728a1439e2656224b2be9c2733ecfe0a1b8585980155b663e95e90c35cfd8ed3fc3
7
- data.tar.gz: fc3ec7a89827eb0fae4831f99ce83891fd4d7a6f658e719808067b6374da87aa77edb545473a046de0ffe521c680fcd0bde8539ed6b8fd7bafd3ef9e6ee3b158
6
+ metadata.gz: 41194b29dfe93f49eda4e371cc224302134a31a3814b88414f542383ace60adb8417c4d7bbc13785b488b320956131c6cdd6a15e4c3dbe0f172f7f78fdf1fe21
7
+ data.tar.gz: 0f8207651b2be53472ec5fbb4956d15b330b6eb11222dae46833ad7b2ac4ffe78748f888655b12880db15bf696d7fc463b0c629b9fdf5ba501acb168a97768ba
@@ -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)
@@ -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