ably 0.7.0 → 0.7.1
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.
- data/.travis.yml +2 -2
- data/Rakefile +2 -0
- data/SPEC.md +230 -194
- data/ably.gemspec +2 -0
- data/lib/ably/auth.rb +7 -5
- data/lib/ably/models/idiomatic_ruby_wrapper.rb +5 -7
- data/lib/ably/models/paginated_resource.rb +14 -21
- data/lib/ably/models/protocol_message.rb +1 -1
- data/lib/ably/modules/ably.rb +4 -0
- data/lib/ably/modules/async_wrapper.rb +2 -2
- data/lib/ably/modules/channels_collection.rb +31 -8
- data/lib/ably/modules/conversions.rb +10 -0
- data/lib/ably/modules/enum.rb +2 -3
- data/lib/ably/modules/state_emitter.rb +8 -8
- data/lib/ably/modules/state_machine.rb +7 -3
- data/lib/ably/realtime/channel.rb +6 -5
- data/lib/ably/realtime/channel/channel_manager.rb +11 -10
- data/lib/ably/realtime/channel/channel_state_machine.rb +10 -9
- data/lib/ably/realtime/channels.rb +3 -0
- data/lib/ably/realtime/client/incoming_message_dispatcher.rb +11 -1
- data/lib/ably/realtime/connection.rb +55 -16
- data/lib/ably/realtime/connection/connection_manager.rb +25 -8
- data/lib/ably/realtime/connection/connection_state_machine.rb +9 -9
- data/lib/ably/realtime/connection/websocket_transport.rb +2 -2
- data/lib/ably/realtime/presence.rb +16 -17
- data/lib/ably/util/crypto.rb +1 -1
- data/lib/ably/version.rb +1 -1
- data/spec/acceptance/realtime/channel_history_spec.rb +6 -5
- data/spec/acceptance/realtime/connection_failures_spec.rb +103 -27
- data/spec/acceptance/realtime/connection_spec.rb +81 -17
- data/spec/acceptance/realtime/presence_spec.rb +82 -30
- data/spec/acceptance/rest/auth_spec.rb +22 -19
- data/spec/acceptance/rest/client_spec.rb +4 -4
- data/spec/acceptance/rest/presence_spec.rb +12 -6
- data/spec/rspec_config.rb +9 -0
- data/spec/shared/model_behaviour.rb +1 -1
- data/spec/spec_helper.rb +4 -1
- data/spec/support/event_machine_helper.rb +26 -37
- data/spec/support/markdown_spec_formatter.rb +96 -68
- data/spec/support/rest_testapp_before_retry.rb +15 -0
- data/spec/support/test_app.rb +4 -0
- data/spec/unit/models/idiomatic_ruby_wrapper_spec.rb +20 -2
- data/spec/unit/models/message_spec.rb +1 -1
- data/spec/unit/models/paginated_resource_spec.rb +15 -1
- data/spec/unit/modules/enum_spec.rb +10 -0
- data/spec/unit/realtime/channels_spec.rb +30 -0
- data/spec/unit/rest/channels_spec.rb +30 -0
- metadata +101 -35
- checksums.yaml +0 -7
@@ -0,0 +1,15 @@
|
|
1
|
+
# If a test fails and RSPEC_RETRY is set to true, create a new
|
2
|
+
# application before retrying the RSpec test again
|
3
|
+
#
|
4
|
+
RSpec.configure do |config|
|
5
|
+
config.around(:example) do |example|
|
6
|
+
example.run
|
7
|
+
|
8
|
+
next if example.metadata[:webmock] # new app is not needed for a mocked test
|
9
|
+
|
10
|
+
if example.exception && ENV['RSPEC_RETRY']
|
11
|
+
TestApp.reload
|
12
|
+
puts "** Test app reloaded before next retry **"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/spec/support/test_app.rb
CHANGED
@@ -94,6 +94,10 @@ class TestApp
|
|
94
94
|
sandbox_client.endpoint.host
|
95
95
|
end
|
96
96
|
|
97
|
+
def realtime_host
|
98
|
+
host.gsub(/rest/, 'realtime')
|
99
|
+
end
|
100
|
+
|
97
101
|
private
|
98
102
|
def sandbox_client
|
99
103
|
@sandbox_client ||= Ably::Rest::Client.new(api_key: 'app.key:secret', tls: true, environment: environment)
|
@@ -207,9 +207,27 @@ describe Ably::Models::IdiomaticRubyWrapper, :api_private do
|
|
207
207
|
context 'iterable' do
|
208
208
|
subject { Ably::Models::IdiomaticRubyWrapper.new(mixed_case_data, stop_at: [:hash_object, :array_object]) }
|
209
209
|
|
210
|
+
let(:expected_keys) { [:mixed_case, :simple, :hash_object, :array_object] }
|
211
|
+
let(:expected_vals) { mixed_case_data.map { |k,v| v } }
|
212
|
+
|
210
213
|
it 'yields key value pairs' do
|
211
|
-
expect(subject.map { |k,v| k }).to eql(
|
212
|
-
expect(subject.map { |k,v| v }).to eql(
|
214
|
+
expect(subject.map { |k,v| k }).to eql(expected_keys)
|
215
|
+
expect(subject.map { |k,v| v }).to eql(expected_vals)
|
216
|
+
end
|
217
|
+
|
218
|
+
context '#each' do
|
219
|
+
it 'returns an enumerator' do
|
220
|
+
expect(subject.each).to be_a(Enumerator)
|
221
|
+
end
|
222
|
+
|
223
|
+
it 'yields key value pairs' do
|
224
|
+
emitted = {}
|
225
|
+
subject.each do |key, val|
|
226
|
+
emitted[key] = val
|
227
|
+
end
|
228
|
+
expect(emitted.keys).to eql(expected_keys)
|
229
|
+
expect(emitted.values).to eql(expected_vals)
|
230
|
+
end
|
213
231
|
end
|
214
232
|
end
|
215
233
|
|
@@ -270,7 +270,7 @@ describe Ably::Models::Message do
|
|
270
270
|
end
|
271
271
|
|
272
272
|
it 'should not allow changes to the payload' do
|
273
|
-
expect { message_0.data["test"] = true }.to raise_error RuntimeError, /can't modify frozen
|
273
|
+
expect { message_0.data["test"] = true }.to raise_error RuntimeError, /can't modify frozen.*Hash/
|
274
274
|
end
|
275
275
|
|
276
276
|
context 'with identical message objects' do
|
@@ -44,6 +44,20 @@ describe Ably::Models::PaginatedResource do
|
|
44
44
|
expect(subject.map { |d| d }).to eql(body)
|
45
45
|
end
|
46
46
|
|
47
|
+
context '#each' do
|
48
|
+
it 'returns an enumerator' do
|
49
|
+
expect(subject.each).to be_a(Enumerator)
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'yields each item' do
|
53
|
+
items = []
|
54
|
+
subject.each do |item|
|
55
|
+
items << item
|
56
|
+
end
|
57
|
+
expect(items).to eq(body)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
47
61
|
it 'provides [] accessor method' do
|
48
62
|
expect(subject[0][:id]).to eql(body[0][:id])
|
49
63
|
expect(subject[1][:id]).to eql(body[1][:id])
|
@@ -114,7 +128,7 @@ describe Ably::Models::PaginatedResource do
|
|
114
128
|
end
|
115
129
|
end
|
116
130
|
|
117
|
-
if defined?(
|
131
|
+
if defined?(Ably::Realtime)
|
118
132
|
context 'with option async_blocking_operations: true' do
|
119
133
|
include RSpec::EventMachine
|
120
134
|
|
@@ -130,6 +130,16 @@ describe Ably::Modules::Enum, :api_private do
|
|
130
130
|
it 'behaves like Enumerable' do
|
131
131
|
expect(subject.map(&:to_sym)).to eql([:value_zero, :value_1, :value_snake_case_2, :sentence_case])
|
132
132
|
end
|
133
|
+
|
134
|
+
context '#each' do
|
135
|
+
it 'returns an enumerator' do
|
136
|
+
expect(subject.each).to be_a(Enumerator)
|
137
|
+
end
|
138
|
+
|
139
|
+
it 'yields each channel' do
|
140
|
+
expect(subject.each.map(&:to_sym)).to eql([:value_zero, :value_1, :value_snake_case_2, :sentence_case])
|
141
|
+
end
|
142
|
+
end
|
133
143
|
end
|
134
144
|
|
135
145
|
context 'defined Enum from Hash class' do
|
@@ -48,4 +48,34 @@ describe Ably::Realtime::Channels do
|
|
48
48
|
expect(subject.get(channel_name, options).object_id).to_not eql(released_channel.object_id)
|
49
49
|
end
|
50
50
|
end
|
51
|
+
|
52
|
+
context 'is Enumerable' do
|
53
|
+
let(:channel_count) { 5 }
|
54
|
+
let(:mock_channel) { instance_double('Ably::Realtime::Channel') }
|
55
|
+
|
56
|
+
before do
|
57
|
+
allow(Ably::Realtime::Channel).to receive(:new).and_return(mock_channel)
|
58
|
+
channel_count.times { |index| subject.get("channel-#{index}") }
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'allows enumeration' do
|
62
|
+
expect(subject.map.count).to eql(channel_count)
|
63
|
+
end
|
64
|
+
|
65
|
+
context '#each' do
|
66
|
+
it 'returns an enumerator' do
|
67
|
+
expect(subject.each).to be_a(Enumerator)
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'yields each channel' do
|
71
|
+
subject.each do |channel|
|
72
|
+
expect(channel).to eql(mock_channel)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'provides #length' do
|
78
|
+
expect(subject.length).to eql(channel_count)
|
79
|
+
end
|
80
|
+
end
|
51
81
|
end
|
@@ -46,4 +46,34 @@ describe Ably::Rest::Channels do
|
|
46
46
|
expect(subject.get(channel_name, options).object_id).to_not eql(released_channel.object_id)
|
47
47
|
end
|
48
48
|
end
|
49
|
+
|
50
|
+
context 'is Enumerable' do
|
51
|
+
let(:channel_count) { 5 }
|
52
|
+
let(:mock_channel) { instance_double('Ably::Rest::Channel') }
|
53
|
+
|
54
|
+
before do
|
55
|
+
allow(Ably::Rest::Channel).to receive(:new).and_return(mock_channel)
|
56
|
+
channel_count.times { |index| subject.get("channel-#{index}") }
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'allows enumeration' do
|
60
|
+
expect(subject.map.count).to eql(channel_count)
|
61
|
+
end
|
62
|
+
|
63
|
+
context '#each' do
|
64
|
+
it 'returns an enumerator' do
|
65
|
+
expect(subject.each).to be_a(Enumerator)
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'yields each channel' do
|
69
|
+
subject.each do |channel|
|
70
|
+
expect(channel).to eql(mock_channel)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'provides #length' do
|
76
|
+
expect(subject.length).to eql(channel_count)
|
77
|
+
end
|
78
|
+
end
|
49
79
|
end
|
metadata
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ably
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.1
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Lewis Marshall
|
@@ -9,174 +10,230 @@ authors:
|
|
9
10
|
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain: []
|
12
|
-
date: 2015-01-
|
13
|
+
date: 2015-01-18 00:00:00.000000000 Z
|
13
14
|
dependencies:
|
14
15
|
- !ruby/object:Gem::Dependency
|
15
16
|
name: eventmachine
|
16
17
|
requirement: !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
17
19
|
requirements:
|
18
|
-
- -
|
20
|
+
- - ~>
|
19
21
|
- !ruby/object:Gem::Version
|
20
22
|
version: '1.0'
|
21
23
|
type: :runtime
|
22
24
|
prerelease: false
|
23
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
24
27
|
requirements:
|
25
|
-
- -
|
28
|
+
- - ~>
|
26
29
|
- !ruby/object:Gem::Version
|
27
30
|
version: '1.0'
|
31
|
+
- !ruby/object:Gem::Dependency
|
32
|
+
name: em-http-request
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
34
|
+
none: false
|
35
|
+
requirements:
|
36
|
+
- - ~>
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '1.1'
|
39
|
+
type: :runtime
|
40
|
+
prerelease: false
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ~>
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '1.1'
|
28
47
|
- !ruby/object:Gem::Dependency
|
29
48
|
name: statesman
|
30
49
|
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
31
51
|
requirements:
|
32
|
-
- -
|
52
|
+
- - ~>
|
33
53
|
- !ruby/object:Gem::Version
|
34
54
|
version: 1.0.0
|
35
55
|
type: :runtime
|
36
56
|
prerelease: false
|
37
57
|
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
38
59
|
requirements:
|
39
|
-
- -
|
60
|
+
- - ~>
|
40
61
|
- !ruby/object:Gem::Version
|
41
62
|
version: 1.0.0
|
42
63
|
- !ruby/object:Gem::Dependency
|
43
64
|
name: faraday
|
44
65
|
requirement: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
45
67
|
requirements:
|
46
|
-
- -
|
68
|
+
- - ~>
|
47
69
|
- !ruby/object:Gem::Version
|
48
70
|
version: '0.9'
|
49
71
|
type: :runtime
|
50
72
|
prerelease: false
|
51
73
|
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
52
75
|
requirements:
|
53
|
-
- -
|
76
|
+
- - ~>
|
54
77
|
- !ruby/object:Gem::Version
|
55
78
|
version: '0.9'
|
56
79
|
- !ruby/object:Gem::Dependency
|
57
80
|
name: json
|
58
81
|
requirement: !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
59
83
|
requirements:
|
60
|
-
- -
|
84
|
+
- - ! '>='
|
61
85
|
- !ruby/object:Gem::Version
|
62
86
|
version: '0'
|
63
87
|
type: :runtime
|
64
88
|
prerelease: false
|
65
89
|
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
66
91
|
requirements:
|
67
|
-
- -
|
92
|
+
- - ! '>='
|
68
93
|
- !ruby/object:Gem::Version
|
69
94
|
version: '0'
|
70
95
|
- !ruby/object:Gem::Dependency
|
71
96
|
name: websocket-driver
|
72
97
|
requirement: !ruby/object:Gem::Requirement
|
98
|
+
none: false
|
73
99
|
requirements:
|
74
|
-
- -
|
100
|
+
- - ~>
|
75
101
|
- !ruby/object:Gem::Version
|
76
102
|
version: '0.3'
|
77
103
|
type: :runtime
|
78
104
|
prerelease: false
|
79
105
|
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
80
107
|
requirements:
|
81
|
-
- -
|
108
|
+
- - ~>
|
82
109
|
- !ruby/object:Gem::Version
|
83
110
|
version: '0.3'
|
84
111
|
- !ruby/object:Gem::Dependency
|
85
112
|
name: msgpack-ably
|
86
113
|
requirement: !ruby/object:Gem::Requirement
|
114
|
+
none: false
|
87
115
|
requirements:
|
88
|
-
- -
|
116
|
+
- - ~>
|
89
117
|
- !ruby/object:Gem::Version
|
90
118
|
version: 0.5.10
|
91
119
|
type: :runtime
|
92
120
|
prerelease: false
|
93
121
|
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
none: false
|
94
123
|
requirements:
|
95
|
-
- -
|
124
|
+
- - ~>
|
96
125
|
- !ruby/object:Gem::Version
|
97
126
|
version: 0.5.10
|
98
127
|
- !ruby/object:Gem::Dependency
|
99
128
|
name: bundler
|
100
129
|
requirement: !ruby/object:Gem::Requirement
|
130
|
+
none: false
|
101
131
|
requirements:
|
102
|
-
- -
|
132
|
+
- - ~>
|
103
133
|
- !ruby/object:Gem::Version
|
104
134
|
version: '1.3'
|
105
135
|
type: :development
|
106
136
|
prerelease: false
|
107
137
|
version_requirements: !ruby/object:Gem::Requirement
|
138
|
+
none: false
|
108
139
|
requirements:
|
109
|
-
- -
|
140
|
+
- - ~>
|
110
141
|
- !ruby/object:Gem::Version
|
111
142
|
version: '1.3'
|
112
143
|
- !ruby/object:Gem::Dependency
|
113
144
|
name: rake
|
114
145
|
requirement: !ruby/object:Gem::Requirement
|
146
|
+
none: false
|
115
147
|
requirements:
|
116
|
-
- -
|
148
|
+
- - ! '>='
|
117
149
|
- !ruby/object:Gem::Version
|
118
150
|
version: '0'
|
119
151
|
type: :development
|
120
152
|
prerelease: false
|
121
153
|
version_requirements: !ruby/object:Gem::Requirement
|
154
|
+
none: false
|
122
155
|
requirements:
|
123
|
-
- -
|
156
|
+
- - ! '>='
|
124
157
|
- !ruby/object:Gem::Version
|
125
158
|
version: '0'
|
126
159
|
- !ruby/object:Gem::Dependency
|
127
160
|
name: redcarpet
|
128
161
|
requirement: !ruby/object:Gem::Requirement
|
162
|
+
none: false
|
129
163
|
requirements:
|
130
|
-
- -
|
164
|
+
- - ! '>='
|
131
165
|
- !ruby/object:Gem::Version
|
132
166
|
version: '0'
|
133
167
|
type: :development
|
134
168
|
prerelease: false
|
135
169
|
version_requirements: !ruby/object:Gem::Requirement
|
170
|
+
none: false
|
136
171
|
requirements:
|
137
|
-
- -
|
172
|
+
- - ! '>='
|
138
173
|
- !ruby/object:Gem::Version
|
139
174
|
version: '0'
|
140
175
|
- !ruby/object:Gem::Dependency
|
141
176
|
name: rspec
|
142
177
|
requirement: !ruby/object:Gem::Requirement
|
178
|
+
none: false
|
143
179
|
requirements:
|
144
|
-
- -
|
180
|
+
- - ~>
|
145
181
|
- !ruby/object:Gem::Version
|
146
182
|
version: 3.1.0
|
147
183
|
type: :development
|
148
184
|
prerelease: false
|
149
185
|
version_requirements: !ruby/object:Gem::Requirement
|
186
|
+
none: false
|
150
187
|
requirements:
|
151
|
-
- -
|
188
|
+
- - ~>
|
152
189
|
- !ruby/object:Gem::Version
|
153
190
|
version: 3.1.0
|
191
|
+
- !ruby/object:Gem::Dependency
|
192
|
+
name: rspec-retry
|
193
|
+
requirement: !ruby/object:Gem::Requirement
|
194
|
+
none: false
|
195
|
+
requirements:
|
196
|
+
- - ! '>='
|
197
|
+
- !ruby/object:Gem::Version
|
198
|
+
version: '0'
|
199
|
+
type: :development
|
200
|
+
prerelease: false
|
201
|
+
version_requirements: !ruby/object:Gem::Requirement
|
202
|
+
none: false
|
203
|
+
requirements:
|
204
|
+
- - ! '>='
|
205
|
+
- !ruby/object:Gem::Version
|
206
|
+
version: '0'
|
154
207
|
- !ruby/object:Gem::Dependency
|
155
208
|
name: yard
|
156
209
|
requirement: !ruby/object:Gem::Requirement
|
210
|
+
none: false
|
157
211
|
requirements:
|
158
|
-
- -
|
212
|
+
- - ! '>='
|
159
213
|
- !ruby/object:Gem::Version
|
160
214
|
version: '0'
|
161
215
|
type: :development
|
162
216
|
prerelease: false
|
163
217
|
version_requirements: !ruby/object:Gem::Requirement
|
218
|
+
none: false
|
164
219
|
requirements:
|
165
|
-
- -
|
220
|
+
- - ! '>='
|
166
221
|
- !ruby/object:Gem::Version
|
167
222
|
version: '0'
|
168
223
|
- !ruby/object:Gem::Dependency
|
169
224
|
name: webmock
|
170
225
|
requirement: !ruby/object:Gem::Requirement
|
226
|
+
none: false
|
171
227
|
requirements:
|
172
|
-
- -
|
228
|
+
- - ! '>='
|
173
229
|
- !ruby/object:Gem::Version
|
174
230
|
version: '0'
|
175
231
|
type: :development
|
176
232
|
prerelease: false
|
177
233
|
version_requirements: !ruby/object:Gem::Requirement
|
234
|
+
none: false
|
178
235
|
requirements:
|
179
|
-
- -
|
236
|
+
- - ! '>='
|
180
237
|
- !ruby/object:Gem::Version
|
181
238
|
version: '0'
|
182
239
|
description: A Ruby client library for ably.io, the real-time messaging service
|
@@ -187,10 +244,10 @@ executables: []
|
|
187
244
|
extensions: []
|
188
245
|
extra_rdoc_files: []
|
189
246
|
files:
|
190
|
-
-
|
191
|
-
-
|
192
|
-
-
|
193
|
-
-
|
247
|
+
- .gitignore
|
248
|
+
- .rspec
|
249
|
+
- .ruby-version.old
|
250
|
+
- .travis.yml
|
194
251
|
- Gemfile
|
195
252
|
- LICENSE.txt
|
196
253
|
- README.md
|
@@ -291,6 +348,7 @@ files:
|
|
291
348
|
- spec/support/private_api_formatter.rb
|
292
349
|
- spec/support/protocol_helper.rb
|
293
350
|
- spec/support/random_helper.rb
|
351
|
+
- spec/support/rest_testapp_before_retry.rb
|
294
352
|
- spec/support/test_app.rb
|
295
353
|
- spec/unit/auth_spec.rb
|
296
354
|
- spec/unit/logger_spec.rb
|
@@ -327,26 +385,33 @@ files:
|
|
327
385
|
homepage: http://github.com/ably/ably-ruby
|
328
386
|
licenses:
|
329
387
|
- MIT
|
330
|
-
metadata: {}
|
331
388
|
post_install_message:
|
332
389
|
rdoc_options: []
|
333
390
|
require_paths:
|
334
391
|
- lib
|
335
392
|
required_ruby_version: !ruby/object:Gem::Requirement
|
393
|
+
none: false
|
336
394
|
requirements:
|
337
|
-
- -
|
395
|
+
- - ! '>='
|
338
396
|
- !ruby/object:Gem::Version
|
339
397
|
version: '0'
|
398
|
+
segments:
|
399
|
+
- 0
|
400
|
+
hash: -4532338095489684894
|
340
401
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
402
|
+
none: false
|
341
403
|
requirements:
|
342
|
-
- -
|
404
|
+
- - ! '>='
|
343
405
|
- !ruby/object:Gem::Version
|
344
406
|
version: '0'
|
407
|
+
segments:
|
408
|
+
- 0
|
409
|
+
hash: -4532338095489684894
|
345
410
|
requirements: []
|
346
411
|
rubyforge_project:
|
347
|
-
rubygems_version:
|
412
|
+
rubygems_version: 1.8.23.2
|
348
413
|
signing_key:
|
349
|
-
specification_version:
|
414
|
+
specification_version: 3
|
350
415
|
summary: A Ruby client library for ably.io, the real-time messaging service
|
351
416
|
test_files:
|
352
417
|
- spec/acceptance/realtime/channel_history_spec.rb
|
@@ -382,6 +447,7 @@ test_files:
|
|
382
447
|
- spec/support/private_api_formatter.rb
|
383
448
|
- spec/support/protocol_helper.rb
|
384
449
|
- spec/support/random_helper.rb
|
450
|
+
- spec/support/rest_testapp_before_retry.rb
|
385
451
|
- spec/support/test_app.rb
|
386
452
|
- spec/unit/auth_spec.rb
|
387
453
|
- spec/unit/logger_spec.rb
|