influxdb-client 1.7.0 → 1.8.0.pre.1289
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 +4 -4
- data/.circleci/config.yml +3 -6
- data/CHANGELOG.md +12 -0
- data/README.md +44 -13
- data/bin/influxdb-onboarding.sh +2 -2
- data/bin/influxdb-restart.sh +3 -2
- data/lib/influxdb2/client/client.rb +5 -4
- data/lib/influxdb2/client/point.rb +1 -1
- data/lib/influxdb2/client/version.rb +1 -1
- data/lib/influxdb2/client/worker.rb +2 -2
- data/lib/influxdb2/client/write_api.rb +56 -3
- data/test/influxdb/client_test.rb +10 -10
- data/test/influxdb/delete_api_integration_test.rb +9 -1
- data/test/influxdb/delete_api_test.rb +15 -15
- data/test/influxdb/query_api_integration_test.rb +1 -1
- data/test/influxdb/query_api_stream_test.rb +1 -1
- data/test/influxdb/query_api_test.rb +7 -7
- data/test/influxdb/write_api_batching_test.rb +157 -108
- data/test/influxdb/write_api_integration_test.rb +2 -2
- data/test/influxdb/write_api_test.rb +135 -38
- metadata +4 -4
@@ -27,7 +27,7 @@ class WriteApiIntegrationTest < MiniTest::Test
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def test_write_into_influx_db
|
30
|
-
client = InfluxDB2::Client.new('http://localhost:
|
30
|
+
client = InfluxDB2::Client.new('http://localhost:8086', 'my-token',
|
31
31
|
bucket: 'my-bucket',
|
32
32
|
org: 'my-org',
|
33
33
|
precision: InfluxDB2::WritePrecision::NANOSECOND,
|
@@ -58,7 +58,7 @@ class WriteApiIntegrationTest < MiniTest::Test
|
|
58
58
|
query = { 'query': 'from(bucket: "my-bucket") |> range(start: -15m, stop: now()) '\
|
59
59
|
"|> filter(fn: (r) => r._measurement == \"#{measurement}\")", 'type': 'flux' }
|
60
60
|
|
61
|
-
uri = URI.parse('http://localhost:
|
61
|
+
uri = URI.parse('http://localhost:8086/api/v2/query?org=my-org')
|
62
62
|
request = Net::HTTP::Post.new(uri.request_uri)
|
63
63
|
request['Authorization'] = 'Token my-token'
|
64
64
|
request[InfluxDB2::DefaultApi::HEADER_CONTENT_TYPE] = 'application/json'
|
@@ -26,7 +26,7 @@ class WriteApiTest < MiniTest::Test
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def test_required_arguments
|
29
|
-
client = InfluxDB2::Client.new('http://localhost:
|
29
|
+
client = InfluxDB2::Client.new('http://localhost:8086', 'my-token')
|
30
30
|
write_api = client.create_write_api
|
31
31
|
|
32
32
|
# precision
|
@@ -44,7 +44,7 @@ class WriteApiTest < MiniTest::Test
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def test_default_arguments_
|
47
|
-
client = InfluxDB2::Client.new('http://localhost:
|
47
|
+
client = InfluxDB2::Client.new('http://localhost:8086', 'my-token',
|
48
48
|
bucket: 'my-bucket',
|
49
49
|
org: 'my-org',
|
50
50
|
precision: InfluxDB2::WritePrecision::NANOSECOND)
|
@@ -55,9 +55,9 @@ class WriteApiTest < MiniTest::Test
|
|
55
55
|
end
|
56
56
|
|
57
57
|
def test_write_line_protocol
|
58
|
-
stub_request(:any, 'http://localhost:
|
58
|
+
stub_request(:any, 'http://localhost:8086/api/v2/write?bucket=my-bucket&org=my-org&precision=ns')
|
59
59
|
.to_return(status: 204)
|
60
|
-
client = InfluxDB2::Client.new('http://localhost:
|
60
|
+
client = InfluxDB2::Client.new('http://localhost:8086', 'my-token',
|
61
61
|
bucket: 'my-bucket',
|
62
62
|
org: 'my-org',
|
63
63
|
precision: InfluxDB2::WritePrecision::NANOSECOND,
|
@@ -65,14 +65,14 @@ class WriteApiTest < MiniTest::Test
|
|
65
65
|
|
66
66
|
client.create_write_api.write(data: 'h2o,location=west value=33i 15')
|
67
67
|
|
68
|
-
assert_requested(:post, 'http://localhost:
|
68
|
+
assert_requested(:post, 'http://localhost:8086/api/v2/write?bucket=my-bucket&org=my-org&precision=ns',
|
69
69
|
times: 1, body: 'h2o,location=west value=33i 15')
|
70
70
|
end
|
71
71
|
|
72
72
|
def test_write_point
|
73
|
-
stub_request(:any, 'http://localhost:
|
73
|
+
stub_request(:any, 'http://localhost:8086/api/v2/write?bucket=my-bucket&org=my-org&precision=ns')
|
74
74
|
.to_return(status: 204)
|
75
|
-
client = InfluxDB2::Client.new('http://localhost:
|
75
|
+
client = InfluxDB2::Client.new('http://localhost:8086', 'my-token',
|
76
76
|
bucket: 'my-bucket',
|
77
77
|
org: 'my-org',
|
78
78
|
precision: InfluxDB2::WritePrecision::NANOSECOND,
|
@@ -82,32 +82,32 @@ class WriteApiTest < MiniTest::Test
|
|
82
82
|
.add_tag('location', 'europe')
|
83
83
|
.add_field('level', 2))
|
84
84
|
|
85
|
-
assert_requested(:post, 'http://localhost:
|
85
|
+
assert_requested(:post, 'http://localhost:8086/api/v2/write?bucket=my-bucket&org=my-org&precision=ns',
|
86
86
|
times: 1, body: 'h2o,location=europe level=2i')
|
87
87
|
end
|
88
88
|
|
89
89
|
def test_write_hash
|
90
|
-
stub_request(:any, 'http://localhost:
|
90
|
+
stub_request(:any, 'http://localhost:8086/api/v2/write?bucket=my-bucket&org=my-org&precision=ns')
|
91
91
|
.to_return(status: 204)
|
92
|
-
client = InfluxDB2::Client.new('http://localhost:
|
92
|
+
client = InfluxDB2::Client.new('http://localhost:8086', 'my-token',
|
93
93
|
bucket: 'my-bucket',
|
94
94
|
org: 'my-org',
|
95
95
|
precision: InfluxDB2::WritePrecision::NANOSECOND,
|
96
96
|
use_ssl: false)
|
97
97
|
|
98
98
|
client.create_write_api.write(data: { name: 'h2o',
|
99
|
-
tags: {
|
99
|
+
tags: { region: 'us', host: 'aws' },
|
100
100
|
fields: { level: 5, saturation: '99%' }, time: 123 })
|
101
101
|
|
102
102
|
expected = 'h2o,host=aws,region=us level=5i,saturation="99%" 123'
|
103
|
-
assert_requested(:post, 'http://localhost:
|
103
|
+
assert_requested(:post, 'http://localhost:8086/api/v2/write?bucket=my-bucket&org=my-org&precision=ns',
|
104
104
|
times: 1, body: expected)
|
105
105
|
end
|
106
106
|
|
107
107
|
def test_write_collection
|
108
|
-
stub_request(:any, 'http://localhost:
|
108
|
+
stub_request(:any, 'http://localhost:8086/api/v2/write?bucket=my-bucket&org=my-org&precision=ns')
|
109
109
|
.to_return(status: 204)
|
110
|
-
client = InfluxDB2::Client.new('http://localhost:
|
110
|
+
client = InfluxDB2::Client.new('http://localhost:8086', 'my-token',
|
111
111
|
bucket: 'my-bucket',
|
112
112
|
org: 'my-org',
|
113
113
|
precision: InfluxDB2::WritePrecision::NANOSECOND,
|
@@ -125,14 +125,14 @@ class WriteApiTest < MiniTest::Test
|
|
125
125
|
|
126
126
|
expected = "h2o,location=west value=33i 15\nh2o,location=europe level=2i"\
|
127
127
|
"\nh2o,host=aws,region=us level=5i,saturation=\"99%\" 123"
|
128
|
-
assert_requested(:post, 'http://localhost:
|
128
|
+
assert_requested(:post, 'http://localhost:8086/api/v2/write?bucket=my-bucket&org=my-org&precision=ns',
|
129
129
|
times: 1, body: expected)
|
130
130
|
end
|
131
131
|
|
132
132
|
def test_array_of_array
|
133
|
-
stub_request(:any, 'http://localhost:
|
133
|
+
stub_request(:any, 'http://localhost:8086/api/v2/write?bucket=my-bucket&org=my-org&precision=ns')
|
134
134
|
.to_return(status: 204)
|
135
|
-
client = InfluxDB2::Client.new('http://localhost:
|
135
|
+
client = InfluxDB2::Client.new('http://localhost:8086', 'my-token',
|
136
136
|
bucket: 'my-bucket',
|
137
137
|
org: 'my-org',
|
138
138
|
precision: InfluxDB2::WritePrecision::NANOSECOND,
|
@@ -144,14 +144,14 @@ class WriteApiTest < MiniTest::Test
|
|
144
144
|
expected = "h2o,location=west value=33i 15\nh2o,location=west value=34i 16"\
|
145
145
|
"\nh2o,location=west value=35i 17"
|
146
146
|
|
147
|
-
assert_requested(:post, 'http://localhost:
|
147
|
+
assert_requested(:post, 'http://localhost:8086/api/v2/write?bucket=my-bucket&org=my-org&precision=ns',
|
148
148
|
times: 1, body: expected)
|
149
149
|
end
|
150
150
|
|
151
151
|
def test_authorization_header
|
152
|
-
stub_request(:any, 'http://localhost:
|
152
|
+
stub_request(:any, 'http://localhost:8086/api/v2/write?bucket=my-bucket&org=my-org&precision=ns')
|
153
153
|
.to_return(status: 204)
|
154
|
-
client = InfluxDB2::Client.new('http://localhost:
|
154
|
+
client = InfluxDB2::Client.new('http://localhost:8086', 'my-token',
|
155
155
|
bucket: 'my-bucket',
|
156
156
|
org: 'my-org',
|
157
157
|
precision: InfluxDB2::WritePrecision::NANOSECOND,
|
@@ -159,31 +159,31 @@ class WriteApiTest < MiniTest::Test
|
|
159
159
|
|
160
160
|
client.create_write_api.write(data: 'h2o,location=west value=33i 15')
|
161
161
|
|
162
|
-
assert_requested(:post, 'http://localhost:
|
162
|
+
assert_requested(:post, 'http://localhost:8086/api/v2/write?bucket=my-bucket&org=my-org&precision=ns',
|
163
163
|
times: 1, headers: { 'Authorization' => 'Token my-token' })
|
164
164
|
end
|
165
165
|
|
166
166
|
def test_without_data
|
167
|
-
stub_request(:any, 'http://localhost:
|
167
|
+
stub_request(:any, 'http://localhost:8086/api/v2/write?bucket=my-bucket&org=my-org&precision=ns')
|
168
168
|
.to_return(status: 204)
|
169
|
-
client = InfluxDB2::Client.new('http://localhost:
|
169
|
+
client = InfluxDB2::Client.new('http://localhost:8086', 'my-token',
|
170
170
|
bucket: 'my-bucket',
|
171
171
|
org: 'my-org',
|
172
172
|
precision: InfluxDB2::WritePrecision::NANOSECOND)
|
173
173
|
|
174
174
|
client.create_write_api.write(data: '')
|
175
175
|
|
176
|
-
assert_requested(:post, 'http://localhost:
|
176
|
+
assert_requested(:post, 'http://localhost:8086/api/v2/write?bucket=my-bucket&org=my-org&precision=ns', times: 0)
|
177
177
|
end
|
178
178
|
|
179
179
|
def test_influx_exception
|
180
180
|
error_body = '{"code":"invalid","message":"unable to parse '\
|
181
181
|
'\'h2o_feet, location=coyote_creek water_level=1.0 1\': missing tag key"}'
|
182
182
|
|
183
|
-
stub_request(:any, 'http://localhost:
|
183
|
+
stub_request(:any, 'http://localhost:8086/api/v2/write?bucket=my-bucket&org=my-org&precision=ns')
|
184
184
|
.to_return(status: 400, headers: { 'X-Platform-Error-Code' => 'invalid' }, body: error_body)
|
185
185
|
|
186
|
-
client = InfluxDB2::Client.new('http://localhost:
|
186
|
+
client = InfluxDB2::Client.new('http://localhost:8086', 'my-token',
|
187
187
|
bucket: 'my-bucket',
|
188
188
|
org: 'my-org',
|
189
189
|
precision: InfluxDB2::WritePrecision::NANOSECOND,
|
@@ -199,14 +199,14 @@ class WriteApiTest < MiniTest::Test
|
|
199
199
|
end
|
200
200
|
|
201
201
|
def test_follow_redirect
|
202
|
-
stub_request(:any, 'http://localhost:
|
202
|
+
stub_request(:any, 'http://localhost:8086/api/v2/write?bucket=my-bucket&org=my-org&precision=ns')
|
203
203
|
.to_return(status: 307, headers:
|
204
204
|
{ 'location' => 'http://localhost:9090/api/v2/write?bucket=my-bucket&org=my-org&precision=ns' })
|
205
205
|
.then.to_return(status: 204)
|
206
206
|
stub_request(:any, 'http://localhost:9090/api/v2/write?bucket=my-bucket&org=my-org&precision=ns')
|
207
207
|
.to_return(status: 204)
|
208
208
|
|
209
|
-
client = InfluxDB2::Client.new('http://localhost:
|
209
|
+
client = InfluxDB2::Client.new('http://localhost:8086', 'my-token',
|
210
210
|
bucket: 'my-bucket',
|
211
211
|
org: 'my-org',
|
212
212
|
precision: InfluxDB2::WritePrecision::NANOSECOND,
|
@@ -214,18 +214,18 @@ class WriteApiTest < MiniTest::Test
|
|
214
214
|
|
215
215
|
client.create_write_api.write(data: 'h2o,location=west value=33i 15')
|
216
216
|
|
217
|
-
assert_requested(:post, 'http://localhost:
|
217
|
+
assert_requested(:post, 'http://localhost:8086/api/v2/write?bucket=my-bucket&org=my-org&precision=ns',
|
218
218
|
times: 1, body: 'h2o,location=west value=33i 15')
|
219
219
|
assert_requested(:post, 'http://localhost:9090/api/v2/write?bucket=my-bucket&org=my-org&precision=ns',
|
220
220
|
times: 1, body: 'h2o,location=west value=33i 15')
|
221
221
|
end
|
222
222
|
|
223
223
|
def test_follow_redirect_max
|
224
|
-
stub_request(:any, 'http://localhost:
|
224
|
+
stub_request(:any, 'http://localhost:8086/api/v2/write?bucket=my-bucket&org=my-org&precision=ns')
|
225
225
|
.to_return(status: 307, headers:
|
226
|
-
{ 'location' => 'http://localhost:
|
226
|
+
{ 'location' => 'http://localhost:8086/api/v2/write?bucket=my-bucket&org=my-org&precision=ns' })
|
227
227
|
|
228
|
-
client = InfluxDB2::Client.new('http://localhost:
|
228
|
+
client = InfluxDB2::Client.new('http://localhost:8086', 'my-token',
|
229
229
|
bucket: 'my-bucket',
|
230
230
|
org: 'my-org',
|
231
231
|
precision: InfluxDB2::WritePrecision::NANOSECOND,
|
@@ -253,10 +253,10 @@ class WriteApiTest < MiniTest::Test
|
|
253
253
|
end
|
254
254
|
|
255
255
|
def test_headers
|
256
|
-
stub_request(:any, 'http://localhost:
|
256
|
+
stub_request(:any, 'http://localhost:8086/api/v2/write?bucket=my-bucket&org=my-org&precision=ns')
|
257
257
|
.to_return(status: 204)
|
258
258
|
|
259
|
-
client = InfluxDB2::Client.new('http://localhost:
|
259
|
+
client = InfluxDB2::Client.new('http://localhost:8086', 'my-token',
|
260
260
|
bucket: 'my-bucket',
|
261
261
|
org: 'my-org',
|
262
262
|
precision: InfluxDB2::WritePrecision::NANOSECOND,
|
@@ -269,14 +269,14 @@ class WriteApiTest < MiniTest::Test
|
|
269
269
|
'User-Agent' => "influxdb-client-ruby/#{InfluxDB2::VERSION}",
|
270
270
|
'Content-Type' => 'text/plain'
|
271
271
|
}
|
272
|
-
assert_requested(:post, 'http://localhost:
|
272
|
+
assert_requested(:post, 'http://localhost:8086/api/v2/write?bucket=my-bucket&org=my-org&precision=ns',
|
273
273
|
times: 1, body: 'h2o,location=west value=33i 15', headers: headers)
|
274
274
|
end
|
275
275
|
|
276
276
|
def test_trailing_slash_in_url
|
277
|
-
stub_request(:any, 'http://localhost:
|
277
|
+
stub_request(:any, 'http://localhost:8086/api/v2/write?bucket=my-bucket&org=my-org&precision=ns')
|
278
278
|
.to_return(status: 204)
|
279
|
-
client = InfluxDB2::Client.new('http://localhost:
|
279
|
+
client = InfluxDB2::Client.new('http://localhost:8086/', 'my-token',
|
280
280
|
bucket: 'my-bucket',
|
281
281
|
org: 'my-org',
|
282
282
|
precision: InfluxDB2::WritePrecision::NANOSECOND,
|
@@ -284,7 +284,104 @@ class WriteApiTest < MiniTest::Test
|
|
284
284
|
|
285
285
|
client.create_write_api.write(data: 'h2o,location=west value=33i 15')
|
286
286
|
|
287
|
-
assert_requested(:post, 'http://localhost:
|
287
|
+
assert_requested(:post, 'http://localhost:8086/api/v2/write?bucket=my-bucket&org=my-org&precision=ns',
|
288
288
|
times: 1, body: 'h2o,location=west value=33i 15')
|
289
289
|
end
|
290
290
|
end
|
291
|
+
|
292
|
+
class PointSettingsTest < MiniTest::Test
|
293
|
+
def setup
|
294
|
+
WebMock.disable_net_connect!
|
295
|
+
|
296
|
+
@client = InfluxDB2::Client.new('http://localhost:8086', 'my-token',
|
297
|
+
bucket: 'my-bucket',
|
298
|
+
org: 'my-org',
|
299
|
+
precision: InfluxDB2::WritePrecision::NANOSECOND,
|
300
|
+
use_ssl: false)
|
301
|
+
|
302
|
+
@id_tag = '132-987-655'
|
303
|
+
@customer_tag = 'California Miner'
|
304
|
+
end
|
305
|
+
|
306
|
+
def test_point_settings
|
307
|
+
point_settings = InfluxDB2::PointSettings.new(default_tags:
|
308
|
+
{ id: @id_tag,
|
309
|
+
customer: @customer_tag })
|
310
|
+
|
311
|
+
default_tags = point_settings.default_tags
|
312
|
+
|
313
|
+
assert_equal @id_tag, default_tags[:id]
|
314
|
+
assert_equal @customer_tag, default_tags[:customer]
|
315
|
+
end
|
316
|
+
|
317
|
+
def test_point_settings_with_add
|
318
|
+
point_settings = InfluxDB2::PointSettings.new
|
319
|
+
point_settings.add_default_tag('id', @id_tag)
|
320
|
+
point_settings.add_default_tag('customer', @customer_tag)
|
321
|
+
|
322
|
+
default_tags = point_settings.default_tags
|
323
|
+
|
324
|
+
assert_equal @id_tag, default_tags['id']
|
325
|
+
assert_equal @customer_tag, default_tags['customer']
|
326
|
+
end
|
327
|
+
end
|
328
|
+
|
329
|
+
class WriteApiDefaultTagsTest < MiniTest::Test
|
330
|
+
def setup
|
331
|
+
WebMock.disable_net_connect!
|
332
|
+
|
333
|
+
@id_tag = '132-987-655'
|
334
|
+
@customer_tag = 'California Miner'
|
335
|
+
@data_center_tag = '${env.data_center}'
|
336
|
+
|
337
|
+
ENV['data_center'] = 'LA'
|
338
|
+
|
339
|
+
@client = InfluxDB2::Client.new('http://localhost:8086', 'my-token',
|
340
|
+
bucket: 'my-bucket',
|
341
|
+
org: 'my-org',
|
342
|
+
precision: InfluxDB2::WritePrecision::NANOSECOND,
|
343
|
+
use_ssl: false,
|
344
|
+
tags: { id: @id_tag })
|
345
|
+
|
346
|
+
point_settings = InfluxDB2::PointSettings.new(default_tags: { customer: @customer_tag })
|
347
|
+
point_settings.add_default_tag('data_center', @data_center_tag)
|
348
|
+
|
349
|
+
@write_api = @client.create_write_api(write_options: InfluxDB2::SYNCHRONOUS,
|
350
|
+
point_settings: point_settings)
|
351
|
+
end
|
352
|
+
|
353
|
+
def test_write_using_default_tags
|
354
|
+
stub_request(:any, 'http://localhost:8086/api/v2/write?bucket=my-bucket&org=my-org&precision=ns')
|
355
|
+
.to_return(status: 204)
|
356
|
+
|
357
|
+
@write_api.write(data: InfluxDB2::Point.new(name: 'h2o')
|
358
|
+
.add_tag('location', 'europe')
|
359
|
+
.add_field('level', 2))
|
360
|
+
|
361
|
+
assert_requested(:post, 'http://localhost:8086/api/v2/write?bucket=my-bucket&org=my-org&precision=ns',
|
362
|
+
times: 1, body: 'h2o,customer=California\ Miner,data_center=LA,id=132-987-655,location=europe '\
|
363
|
+
'level=2i')
|
364
|
+
end
|
365
|
+
|
366
|
+
def test_write_collection
|
367
|
+
stub_request(:any, 'http://localhost:8086/api/v2/write?bucket=my-bucket&org=my-org&precision=ns')
|
368
|
+
.to_return(status: 204)
|
369
|
+
|
370
|
+
point = InfluxDB2::Point.new(name: 'h2o')
|
371
|
+
.add_tag('location', 'europe')
|
372
|
+
.add_field('level', 2)
|
373
|
+
|
374
|
+
hash = { name: 'h2o',
|
375
|
+
tags: { host: 'aws', region: 'us' },
|
376
|
+
fields: { level: 5, saturation: '99%' }, time: 123 }
|
377
|
+
|
378
|
+
@write_api.write(data: ['h2o,location=west value=33i 15', nil, '', point, hash])
|
379
|
+
|
380
|
+
expected = 'h2o,location=west value=33i 15'\
|
381
|
+
"\nh2o,customer=California\\ Miner,data_center=LA,id=132-987-655,location=europe level=2i"\
|
382
|
+
"\nh2o,customer=California\\ Miner,data_center=LA,host=aws,id=132-987-655,region=us "\
|
383
|
+
'level=5i,saturation="99%" 123'
|
384
|
+
assert_requested(:post, 'http://localhost:8086/api/v2/write?bucket=my-bucket&org=my-org&precision=ns',
|
385
|
+
times: 1, body: expected)
|
386
|
+
end
|
387
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: influxdb-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.8.0.pre.1289
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jakub Bednar
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-10-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -197,9 +197,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
197
197
|
version: 2.2.0
|
198
198
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
199
199
|
requirements:
|
200
|
-
- - "
|
200
|
+
- - ">"
|
201
201
|
- !ruby/object:Gem::Version
|
202
|
-
version:
|
202
|
+
version: 1.3.1
|
203
203
|
requirements: []
|
204
204
|
rubygems_version: 3.0.3
|
205
205
|
signing_key:
|