influxdb-client 2.9.0.pre.6326 → 2.9.0.pre.6549

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b6cb295165aaf2b2c7258a33d5c8b97a304df8d1a57a7922b87add1fa2d80e0d
4
- data.tar.gz: b3bbb0e1c859851eae554301a0859dc63ab974e02d91481fede961ccc9174691
3
+ metadata.gz: b1b6ab683d6ef70eff99de868e07895325d4467efd1e0de8987c34cca1c94552
4
+ data.tar.gz: c344c09cdfe61c111b525d333ec2768a28869eb3c9683197618c387c072d7746
5
5
  SHA512:
6
- metadata.gz: 0e118873cab062084c16c66de8d92bafd7e3dc7d8f0d86186d5966003b9378cfda269ed897e4e9405958f27289490bfedb0cc6cdd4f8dff51f5cc938dd60df02
7
- data.tar.gz: 0ebf3f5058918f06247c7c7fe41ca29308a6ba8c219ffa9cabeaf316bd9768f84da8e250290cb4c6f91495944b8efd606d67cb8d49a9ff99375245e7a3dd7fe4
6
+ metadata.gz: a77d6cb437975a961ad21ddb9baca14bfcd06afc8005475270a4c6cdf87421973c76815c30eb58d67117764a151c604c2a8e750d06213bb5fb69a1a81ced410a
7
+ data.tar.gz: b89483a139e8ae6447f17e9c316a02f5dc83bbd40307adb61f4b98749393f8d7618e83d611c5a9906f0f5874f0f29c7b234d3950fb3f7d2c6a73427ff92281fc
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  ## 2.9.0 [unreleased]
2
2
 
3
+ :warning: The client can be used as a resource:
4
+
5
+ InfluxDB2::Client.use('https://localhost:8086', 'my-token') do |client|
6
+ client.do_something
7
+ end
8
+
9
+ ### Features
10
+ 1. [#126](https://github.com/influxdata/influxdb-client-ruby/pull/126): Add `Task` API
11
+ 1. [#127](https://github.com/influxdata/influxdb-client-ruby/pull/127): Client can be used as a resource
12
+
3
13
  ### Bug Fixes
4
14
  1. [#123](https://github.com/influxdata/influxdb-client-ruby/pull/123): Duplicate columns warning shows in improper situations
5
15
  1. [#124](https://github.com/influxdata/influxdb-client-ruby/pull/124): Query return type is `Array` instead of `Hash`
data/README.md CHANGED
@@ -81,6 +81,18 @@ Use **InfluxDB::Client** to create a client connected to a running InfluxDB 2 in
81
81
 
82
82
  ```ruby
83
83
  client = InfluxDB2::Client.new('https://localhost:8086', 'my-token')
84
+
85
+ client.do_something
86
+
87
+ client.close!
88
+ ```
89
+
90
+ the **InfluxDB::Client** can be also used as a resource:
91
+
92
+ ```ruby
93
+ InfluxDB2::Client.use('https://localhost:8086', 'my-token') do |client|
94
+ client.do_something
95
+ end
84
96
  ```
85
97
 
86
98
  #### Client Options
@@ -119,38 +131,41 @@ The result retrieved by [QueryApi](https://github.com/influxdata/influxdb-client
119
131
 
120
132
  Synchronously executes the Flux query and return result as unprocessed String
121
133
  ```ruby
122
- client = InfluxDB2::Client.new('https://localhost:8086', 'my-token',
123
- bucket: 'my-bucket',
124
- org: 'my-org')
134
+ InfluxDB2::Client.use('https://localhost:8086', 'my-token', org: 'my-org') do |client|
125
135
 
126
- query_api = client.create_query_api
127
- result = query_api.query_raw(query: 'from(bucket:"' + bucket + '") |> range(start: 1970-01-01T00:00:00.000000001Z) |> last()')
136
+ result = client
137
+ .create_query_api
138
+ .query_raw(query: 'from(bucket:"my-bucket") |> range(start: 1970-01-01) |> last()')
139
+ puts result
140
+ end
128
141
  ```
129
142
  #### Synchronous query
130
143
  Synchronously executes the Flux query and return result as a Array of [FluxTables](https://github.com/influxdata/influxdb-client-ruby/blob/master/lib/influxdb2/client/flux_table.rb)
131
144
  ```ruby
132
- client = InfluxDB2::Client.new('https://localhost:8086', 'my-token',
133
- bucket: 'my-bucket',
134
- org: 'my-org')
135
-
136
- query_api = client.create_query_api
137
- result = query_api.query(query: 'from(bucket:"' + bucket + '") |> range(start: 1970-01-01T00:00:00.000000001Z) |> last()')
145
+ InfluxDB2::Client.use('https://localhost:8086', 'my-token', org: 'my-org') do |client|
146
+
147
+ result = client
148
+ .create_query_api
149
+ .query(query: 'from(bucket:"my-bucket") |> range(start: 1970-01-01) |> last()')
150
+
151
+ result.each do |table|
152
+ table.records.each { |record| puts record.values }
153
+ end
154
+ end
138
155
  ```
139
156
 
140
157
  #### Query stream
141
158
  Synchronously executes the Flux query and return stream of [FluxRecord](https://github.com/influxdata/influxdb-client-ruby/blob/master/lib/influxdb2/client/flux_table.rb)
142
159
  ```ruby
143
- client = InfluxDB2::Client.new('https://localhost:8086', 'my-token',
144
- bucket: 'my-bucket',
145
- org: 'my-org')
146
-
147
- query_api = client.create_query_api
160
+ InfluxDB2::Client.use('https://localhost:8086', 'my-token', org: 'my-org') do |client|
148
161
 
149
- query = 'from(bucket: "my-bucket") |> range(start: -10m, stop: now()) ' \
150
- "|> filter(fn: (r) => r._measurement == \"#{measurement}\")"
162
+ stream = client
163
+ .create_query_api
164
+ .query_stream(query: 'from(bucket:"my-bucket") |> range(start: 1970-01-01) |> last()')
151
165
 
152
- query_api.query_stream(query: query).each do |record|
153
- puts record.to_s
166
+ stream.each do |record|
167
+ puts record.values
168
+ end
154
169
  end
155
170
  ```
156
171
 
@@ -168,30 +183,30 @@ Parameterized query example:
168
183
  > :warning: Parameterized Queries are supported only in InfluxDB Cloud, currently there is no support in InfluxDB OSS.
169
184
 
170
185
  ```ruby
171
- client = InfluxDB2::Client.new('https://localhost:8086', 'my-token',
172
- bucket: 'my-bucket',
173
- org: 'my-org')
174
-
175
- query = 'from(bucket: params.bucketParam) |> range(start: duration(v: params.startParam))'
176
- params = { 'bucketParam' => 'my-bucket', 'startParam' => '-1h' }
177
-
178
- query_api = client.create_query_api
179
- result = query_api.query(query: query, params: params)
180
-
181
- result[0].records.each { |record| puts "#{record.time} #{record.measurement}: #{record.field} #{record.value}" }
186
+ InfluxDB2::Client.use('https://localhost:8086', 'my-token', org: 'my-org') do |client|
187
+
188
+ query = 'from(bucket: params.bucketParam) |> range(start: duration(v: params.startParam))'
189
+ params = { 'bucketParam' => 'my-bucket', 'startParam' => '-1h' }
190
+
191
+ query_api = client.create_query_api
192
+ result = query_api.query(query: query, params: params)
193
+
194
+ result[0].records.each { |record| puts "#{record.time} #{record.measurement}: #{record.field} #{record.value}" }
195
+ end
182
196
  ```
183
197
 
184
198
  ### Writing data
185
199
  The [WriteApi](https://github.com/influxdata/influxdb-client-ruby/blob/master/lib/influxdb2/client/write_api.rb) supports synchronous and batching writes into InfluxDB 2.x. In default api uses synchronous write. To enable batching you can use WriteOption.
186
200
 
187
201
  ```ruby
188
- client = InfluxDB2::Client.new('https://localhost:8086', 'my-token',
189
- bucket: 'my-bucket',
190
- org: 'my-org',
191
- precision: InfluxDB2::WritePrecision::NANOSECOND)
202
+ InfluxDB2::Client.use('https://localhost:8086', 'my-token',
203
+ bucket: 'my-bucket',
204
+ org: 'my-org',
205
+ precision: InfluxDB2::WritePrecision::NANOSECOND) do |client|
192
206
 
193
- write_api = client.create_write_api
194
- write_api.write(data: 'h2o,location=west value=33i 15')
207
+ write_api = client.create_write_api
208
+ write_api.write(data: 'h2o,location=west value=33i 15')
209
+ end
195
210
  ```
196
211
 
197
212
  #### Batching
@@ -209,39 +224,46 @@ The writes are processed in batches which are configurable by `WriteOptions`:
209
224
  | exponential_base | the base for the exponential retry delay, the next delay is computed using random exponential backoff as a random value within the interval ``retry_interval * exponential_base^(attempts-1)`` and ``retry_interval * exponential_base^(attempts)``. Example for ``retry_interval=5000, exponential_base=2, max_retry_delay=125000, total=5`` Retry delays are random distributed values within the ranges of ``[5000-10000, 10000-20000, 20000-40000, 40000-80000, 80000-125000]`` | 2 |
210
225
  | batch_abort_on_exception | the batching worker will be aborted after failed retry strategy | false |
211
226
  ```ruby
212
- write_options = InfluxDB2::WriteOptions.new(write_type: InfluxDB2::WriteType::BATCHING,
213
- batch_size: 10, flush_interval: 5_000,
214
- max_retries: 3, max_retry_delay: 15_000,
215
- exponential_base: 2)
216
- client = InfluxDB2::Client.new('http://localhost:8086',
217
- 'my-token',
218
- bucket: 'my-bucket',
219
- org: 'my-org',
220
- precision: InfluxDB2::WritePrecision::NANOSECOND,
221
- use_ssl: false)
222
-
223
- write_api = client.create_write_api(write_options: write_options)
224
- write_api.write(data: 'h2o,location=west value=33i 15')
227
+ InfluxDB2::Client.use('http://localhost:8086',
228
+ 'my-token',
229
+ bucket: 'my-bucket',
230
+ org: 'my-org',
231
+ precision: InfluxDB2::WritePrecision::NANOSECOND,
232
+ use_ssl: false) do |client|
233
+
234
+ write_options = InfluxDB2::WriteOptions.new(write_type: InfluxDB2::WriteType::BATCHING,
235
+ batch_size: 10, flush_interval: 5_000,
236
+ max_retries: 3, max_retry_delay: 15_000,
237
+ exponential_base: 2)
238
+
239
+ write_api = client.create_write_api(write_options: write_options)
240
+ write_api.write(data: 'h2o,location=west value=33i 15')
241
+ end
225
242
  ```
226
243
 
227
244
  #### Time precision
228
245
 
229
246
  Configure default time precision:
230
247
  ```ruby
231
- client = InfluxDB2::Client.new('https://localhost:8086', 'my-token',
232
- bucket: 'my-bucket',
233
- org: 'my-org',
234
- precision: InfluxDB2::WritePrecision::NANOSECOND)
248
+ InfluxDB2::Client.use('https://localhost:8086', 'my-token',
249
+ bucket: 'my-bucket',
250
+ org: 'my-org',
251
+ precision: InfluxDB2::WritePrecision::NANOSECOND) do |client|
252
+
253
+ client.do_something
254
+ end
235
255
  ```
236
256
 
237
257
  Configure precision per write:
238
258
  ```ruby
239
- client = InfluxDB2::Client.new('https://localhost:8086', 'my-token',
240
- bucket: 'my-bucket',
241
- org: 'my-org')
259
+ InfluxDB2::Client.use('https://localhost:8086', 'my-token',
260
+ bucket: 'my-bucket',
261
+ org: 'my-org',
262
+ precision: InfluxDB2::WritePrecision::NANOSECOND) do |client|
242
263
 
243
- write_api = client.create_write_api
244
- write_api.write(data: 'h2o,location=west value=33i 15', precision: InfluxDB2::WritePrecision::SECOND)
264
+ write_api = client.create_write_api
265
+ write_api.write(data: 'h2o,location=west value=33i 15', precision: InfluxDB2::WritePrecision::SECOND)
266
+ end
245
267
  ```
246
268
  Allowed values for precision are:
247
269
  - `InfluxDB2::WritePrecision::NANOSECOND` for nanosecond
@@ -253,18 +275,22 @@ Allowed values for precision are:
253
275
 
254
276
  Default `bucket` and `organization` destination are configured via `InfluxDB::Client`:
255
277
  ```ruby
256
- client = InfluxDB2::Client.new('https://localhost:8086', 'my-token',
257
- bucket: 'my-bucket',
258
- org: 'my-org')
278
+ InfluxDB2::Client.use('https://localhost:8086', 'my-token',
279
+ bucket: 'my-bucket',
280
+ org: 'my-org') do |client|
281
+
282
+ client.do_something
283
+ end
259
284
  ```
260
285
 
261
286
  but there is also possibility to override configuration per write:
262
287
 
263
288
  ```ruby
264
- client = InfluxDB2::Client.new('https://localhost:8086', 'my-token')
289
+ InfluxDB2::Client.use('https://localhost:8086', 'my-token') do |client|
265
290
 
266
- write_api = client.create_write_api
267
- write_api.write(data: 'h2o,location=west value=33i 15', bucket: 'production-data', org: 'customer-1')
291
+ write_api = client.create_write_api
292
+ write_api.write(data: 'h2o,location=west value=33i 15', bucket: 'production-data', org: 'customer-1')
293
+ end
268
294
  ```
269
295
 
270
296
  #### Data format
@@ -277,21 +303,22 @@ The data could be written as:
277
303
  1. `Array` of above items
278
304
 
279
305
  ```ruby
280
- client = InfluxDB2::Client.new('https://localhost:8086', 'my-token',
281
- bucket: 'my-bucket',
282
- org: 'my-org',
283
- precision: InfluxDB2::WritePrecision::NANOSECOND)
306
+ InfluxDB2::Client.use('https://localhost:8086', 'my-token',
307
+ bucket: 'my-bucket',
308
+ org: 'my-org',
309
+ precision: InfluxDB2::WritePrecision::NANOSECOND) do |client|
284
310
 
285
- point = InfluxDB2::Point.new(name: 'h2o')
286
- .add_tag('location', 'europe')
287
- .add_field('level', 2)
311
+ point = InfluxDB2::Point.new(name: 'h2o')
312
+ .add_tag('location', 'europe')
313
+ .add_field('level', 2)
288
314
 
289
- hash = { name: 'h2o',
290
- tags: { host: 'aws', region: 'us' },
291
- fields: { level: 5, saturation: '99%' }, time: 123 }
315
+ hash = { name: 'h2o',
316
+ tags: { host: 'aws', region: 'us' },
317
+ fields: { level: 5, saturation: '99%' }, time: 123 }
292
318
 
293
- write_api = client.create_write_api
294
- write_api.write(data: ['h2o,location=west value=33i 15', point, hash])
319
+ write_api = client.create_write_api
320
+ write_api.write(data: ['h2o,location=west value=33i 15', point, hash])
321
+ end
295
322
  ```
296
323
 
297
324
  #### Default Tags
@@ -306,22 +333,23 @@ The expressions:
306
333
  ##### Via API
307
334
 
308
335
  ```ruby
309
- client = InfluxDB2::Client.new('http://localhost:8086', 'my-token',
310
- bucket: 'my-bucket',
311
- org: 'my-org',
312
- precision: InfluxDB2::WritePrecision::NANOSECOND,
313
- use_ssl: false,
314
- tags: { id: '132-987-655' })
315
-
316
- point_settings = InfluxDB2::PointSettings.new(default_tags: { customer: 'California Miner' })
317
- point_settings.add_default_tag('data_center', '${env.data_center}')
318
-
319
- write_api = client.create_write_api(write_options: InfluxDB2::SYNCHRONOUS,
320
- point_settings: point_settings)
321
-
322
- write_api.write(data: InfluxDB2::Point.new(name: 'h2o')
323
- .add_tag('location', 'europe')
324
- .add_field('level', 2))
336
+ InfluxDB2::Client.use('http://localhost:8086', 'my-token',
337
+ bucket: 'my-bucket',
338
+ org: 'my-org',
339
+ precision: InfluxDB2::WritePrecision::NANOSECOND,
340
+ use_ssl: false,
341
+ tags: { id: '132-987-655' }) do |client|
342
+
343
+ point_settings = InfluxDB2::PointSettings.new(default_tags: { customer: 'California Miner' })
344
+ point_settings.add_default_tag('data_center', '${env.data_center}')
345
+
346
+ write_api = client.create_write_api(write_options: InfluxDB2::SYNCHRONOUS,
347
+ point_settings: point_settings)
348
+
349
+ write_api.write(data: InfluxDB2::Point.new(name: 'h2o')
350
+ .add_tag('location', 'europe')
351
+ .add_field('level', 2))
352
+ end
325
353
  ```
326
354
 
327
355
  ### Delete data
@@ -329,14 +357,15 @@ write_api.write(data: InfluxDB2::Point.new(name: 'h2o')
329
357
  The [DeleteApi](https://github.com/influxdata/influxdb-client-ruby/blob/master/lib/influxdb2/client/delete_api.rb) supports deletes [points](https://docs.influxdata.com/influxdb/latest/reference/key-concepts/data-elements/#point) from an InfluxDB bucket.
330
358
 
331
359
  ```ruby
332
- client = InfluxDB2::Client.new('http://localhost:8086', 'my-token',
333
- bucket: 'my-bucket',
334
- org: 'my-org',
335
- precision: InfluxDB2::WritePrecision::NANOSECOND)
336
-
337
- client.create_delete_api.delete(DateTime.rfc3339('2019-02-03T04:05:06+07:00'),
338
- DateTime.rfc3339('2019-03-03T04:05:06+07:00'),
339
- predicate: 'key1="value1" AND key2="value"')
360
+ InfluxDB2::Client.use('http://localhost:8086', 'my-token',
361
+ bucket: 'my-bucket',
362
+ org: 'my-org',
363
+ precision: InfluxDB2::WritePrecision::NANOSECOND) do |client|
364
+
365
+ client.create_delete_api.delete(DateTime.rfc3339('2019-02-03T04:05:06+07:00'),
366
+ DateTime.rfc3339('2019-03-03T04:05:06+07:00'),
367
+ predicate: 'key1="value1" AND key2="value"')
368
+ end
340
369
  ```
341
370
 
342
371
  The time range could be specified as:
@@ -376,51 +405,50 @@ bucket = 'my-bucket'
376
405
  org = 'my-org'
377
406
  token = 'my-token'
378
407
 
379
- client = InfluxDB2::Client.new(url,
380
- token,
381
- bucket: bucket,
382
- org: org,
383
- use_ssl: false,
384
- precision: InfluxDB2::WritePrecision::NANOSECOND)
385
-
386
- api = InfluxDB2::API::Client.new(client)
387
-
388
- # Find my organization
389
- organization = api.create_organizations_api
390
- .get_orgs
391
- .orgs
392
- .select { |it| it.name == 'my-org' }
393
- .first
394
-
395
- #
396
- # Create new Bucket
397
- #
398
- retention_rule = InfluxDB2::API::RetentionRule.new(type: 'expire', every_seconds: 3600)
399
- bucket_name = 'new-bucket-name'
400
- request = InfluxDB2::API::PostBucketRequest.new(org_id: organization.id,
401
- name: bucket_name,
402
- retention_rules: [retention_rule])
403
- bucket = api.create_buckets_api
404
- .post_buckets(request)
405
-
406
- #
407
- # Create Permission to read/write from Bucket
408
- #
409
- resource = InfluxDB2::API::Resource.new(type: 'buckets',
410
- id: bucket.id,
411
- org_id: organization.id)
412
- authorization = InfluxDB2::API::Authorization.new(description: "Authorization to read/write bucket: #{bucket.name}",
413
- org_id: organization.id,
414
- permissions: [
415
- InfluxDB2::API::Permission.new(action: 'read', resource: resource),
416
- InfluxDB2::API::Permission.new(action: 'write', resource: resource)
417
- ])
418
- result = api.create_authorizations_api
419
- .post_authorizations(authorization)
420
-
421
- print("The token: '#{result.token}' is authorized to read/write from/to bucket: '#{bucket.name}'.")
422
-
423
- client.close!
408
+ InfluxDB2::Client.use(url,
409
+ token,
410
+ bucket: bucket,
411
+ org: org,
412
+ use_ssl: false,
413
+ precision: InfluxDB2::WritePrecision::NANOSECOND) do |client|
414
+
415
+ api = InfluxDB2::API::Client.new(client)
416
+
417
+ # Find my organization
418
+ organization = api.create_organizations_api
419
+ .get_orgs
420
+ .orgs
421
+ .select { |it| it.name == 'my-org' }
422
+ .first
423
+
424
+ #
425
+ # Create new Bucket
426
+ #
427
+ retention_rule = InfluxDB2::API::RetentionRule.new(type: 'expire', every_seconds: 3600)
428
+ bucket_name = 'new-bucket-name'
429
+ request = InfluxDB2::API::PostBucketRequest.new(org_id: organization.id,
430
+ name: bucket_name,
431
+ retention_rules: [retention_rule])
432
+ bucket = api.create_buckets_api
433
+ .post_buckets(request)
434
+
435
+ #
436
+ # Create Permission to read/write from Bucket
437
+ #
438
+ resource = InfluxDB2::API::Resource.new(type: 'buckets',
439
+ id: bucket.id,
440
+ org_id: organization.id)
441
+ authorization = InfluxDB2::API::Authorization.new(description: "Authorization to read/write bucket: #{bucket.name}",
442
+ org_id: organization.id,
443
+ permissions: [
444
+ InfluxDB2::API::Permission.new(action: 'read', resource: resource),
445
+ InfluxDB2::API::Permission.new(action: 'write', resource: resource)
446
+ ])
447
+ result = api.create_authorizations_api
448
+ .post_authorizations(authorization)
449
+
450
+ print("The token: '#{result.token}' is authorized to read/write from/to bucket: '#{bucket.name}'.")
451
+ end
424
452
 
425
453
  ```
426
454
  - sources - [create_new_bucket.rb](/examples/create_new_bucket.rb)
@@ -63,6 +63,23 @@ module InfluxDB2
63
63
  at_exit { close! }
64
64
  end
65
65
 
66
+ # Instantiate a new InfluxDB client with code block. The client will be passed as an argument
67
+ # and will be automatically closed when the block terminates.
68
+ #
69
+ # It takes same args as {InfluxDB2::Client#initialize}.
70
+ #
71
+ # @example Instantiate a client.
72
+ # InfluxDBClient::Client.use(url: 'https://localhost:8086', token: 'my-token') do |client|
73
+ # ping = client.ping
74
+ # puts ping.version
75
+ # end
76
+ def self.use(*args)
77
+ client = Client.new(*args)
78
+ yield client
79
+ ensure
80
+ client.close!
81
+ end
82
+
66
83
  # Write time series data into InfluxDB thought WriteApi.
67
84
  #
68
85
  # @return [WriteApi] New instance of WriteApi.
@@ -126,4 +126,32 @@ class ClientTest < Minitest::Test
126
126
 
127
127
  assert_match 'authorization: ***', output.string
128
128
  end
129
+
130
+ def test_resource
131
+ InfluxDB2::Client.use('http://localhost:8086', 'my-token', use_ssl: false) do |client|
132
+ ping = client.ping
133
+ assert_equal 'ok', ping.status
134
+ end
135
+ end
136
+
137
+ def test_resource_closed
138
+ client = nil
139
+ InfluxDB2::Client.use('http://localhost:8086', 'my-token', use_ssl: false) do |resource|
140
+ client = resource
141
+ end
142
+ assert_equal true, client.instance_variable_get(:@closed)
143
+ end
144
+
145
+ def test_resource_closed_error
146
+ client = nil
147
+ begin
148
+ InfluxDB2::Client.use('http://localhost:8086', 'my-token', use_ssl: false) do |resource|
149
+ client = resource
150
+ raise 'Just for testing.'
151
+ end
152
+ rescue StandardError => e
153
+ puts e
154
+ end
155
+ assert_equal true, client.instance_variable_get(:@closed)
156
+ end
129
157
  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: 2.9.0.pre.6326
4
+ version: 2.9.0.pre.6549
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jakub Bednar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-02 00:00:00.000000000 Z
11
+ date: 2022-11-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler