fluent-plugin-mongo 1.5.0 → 1.6.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.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +6 -0
- data/.github/workflows/linux.yml +48 -0
- data/ChangeLog +11 -0
- data/README.rdoc +4 -0
- data/VERSION +1 -1
- data/fluent-plugin-mongo.gemspec +4 -2
- data/lib/fluent/plugin/out_mongo.rb +46 -4
- data/test/plugin/test_out_mongo.rb +105 -0
- metadata +44 -12
- data/.travis.yml +0 -18
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0a7505d5d82e1fcf8aa0625efa3bd19f68d7ddd6a9ec8ef75050d5aba1b663a1
|
|
4
|
+
data.tar.gz: a0efb583886eb8e8880881d3727dd61e6e2d19c3d2a3d34e4e5d94f0d843b3c3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c26d8de1f5c46fbeec69a871fcd26ac83969b58b49990a458f8a25eff830a2b35197267a002d657d3ae751aced56d5637ed1fbc394635e2c59886b4ba2fbe82f
|
|
7
|
+
data.tar.gz: 4a33374071ca219f56bb3be9132c1e05d3c2bf1c4018d769fbf2cb7ea61b4eb8f0cabbb6e85baceea9dfcd44c80bc11e7fce75356abe7846fdb6b6a150d082b3
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
name: Test
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
branches: [master]
|
|
5
|
+
pull_request:
|
|
6
|
+
branches: [master]
|
|
7
|
+
jobs:
|
|
8
|
+
build:
|
|
9
|
+
runs-on: ${{ matrix.os }}
|
|
10
|
+
continue-on-error: ${{ matrix.experimental }}
|
|
11
|
+
strategy:
|
|
12
|
+
fail-fast: false
|
|
13
|
+
matrix:
|
|
14
|
+
ruby: [ '4.0', '3.4', '3.3', '3.2', '3.1', '3.0', '2.7' ]
|
|
15
|
+
mongodb-version: ['5.0', '4.4', '4.2']
|
|
16
|
+
os:
|
|
17
|
+
- ubuntu-latest
|
|
18
|
+
experimental: [false]
|
|
19
|
+
include:
|
|
20
|
+
- ruby: head
|
|
21
|
+
os: ubuntu-latest
|
|
22
|
+
experimental: true
|
|
23
|
+
mongodb-version: '4.0'
|
|
24
|
+
- ruby: head
|
|
25
|
+
os: ubuntu-latest
|
|
26
|
+
experimental: true
|
|
27
|
+
mongodb-version: '4.2'
|
|
28
|
+
- ruby: head
|
|
29
|
+
os: ubuntu-latest
|
|
30
|
+
experimental: true
|
|
31
|
+
mongodb-version: '4.4'
|
|
32
|
+
|
|
33
|
+
name: Ruby ${{ matrix.ruby }} and MongoDB ${{ matrix.mongodb-version }} on ${{ matrix.os }}
|
|
34
|
+
steps:
|
|
35
|
+
- uses: actions/checkout@v3
|
|
36
|
+
- uses: ruby/setup-ruby@v1
|
|
37
|
+
with:
|
|
38
|
+
ruby-version: ${{ matrix.ruby }}
|
|
39
|
+
- name: Start MongoDB
|
|
40
|
+
uses: supercharge/mongodb-github-action@1.8.0
|
|
41
|
+
with:
|
|
42
|
+
mongodb-version: ${{ matrix.mongodb-version }}
|
|
43
|
+
- name: unit testing
|
|
44
|
+
env:
|
|
45
|
+
CI: true
|
|
46
|
+
run: |
|
|
47
|
+
bundle install --jobs 4 --retry 3
|
|
48
|
+
bundle exec rake test
|
data/ChangeLog
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
Release 1.6.1 - 2026/02/12
|
|
2
|
+
|
|
3
|
+
* out_mongo: Fix RangeError by converting large integers to BSON::Decimal128
|
|
4
|
+
* gem: add bigdecimal as dependency for Ruby 3.4
|
|
5
|
+
* Drop support for MongoDB 4.0.
|
|
6
|
+
|
|
7
|
+
Release 1.6.0 - 2022/07/15
|
|
8
|
+
|
|
9
|
+
* Update mongo gem dependency
|
|
10
|
+
* out_mongo: Add object_id_keys parameter to convert string to Mongo ObjectId
|
|
11
|
+
|
|
1
12
|
Release 1.5.0 - 2020/11/26
|
|
2
13
|
|
|
3
14
|
* out_mongo: Support nested fields in date_keys
|
data/README.rdoc
CHANGED
|
@@ -59,6 +59,10 @@ Use _mongo_ type in match.
|
|
|
59
59
|
# eg: updated_at: "2020-02-01T08:22:23.780Z" or updated_at: 1580546457010
|
|
60
60
|
date_keys updated_at
|
|
61
61
|
|
|
62
|
+
# Specify id fields in record to use MongoDB's BSON ObjectID (Optional) default: nil
|
|
63
|
+
# eg: my_id: "507f1f77bcf86cd799439011"
|
|
64
|
+
object_id_keys my_id
|
|
65
|
+
|
|
62
66
|
# Other buffer configurations here
|
|
63
67
|
</match>
|
|
64
68
|
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.
|
|
1
|
+
1.6.1
|
data/fluent-plugin-mongo.gemspec
CHANGED
|
@@ -17,10 +17,12 @@ Gem::Specification.new do |gem|
|
|
|
17
17
|
gem.require_paths = ['lib']
|
|
18
18
|
|
|
19
19
|
gem.add_dependency "fluentd", [">= 0.14.22", "< 2"]
|
|
20
|
-
gem.
|
|
20
|
+
gem.add_dependency "bigdecimal", "~> 4.0"
|
|
21
|
+
gem.add_runtime_dependency "mongo", ">= 2.15.0", "< 2.19.0"
|
|
21
22
|
gem.add_development_dependency "rake", ">= 0.9.2"
|
|
22
23
|
gem.add_development_dependency "simplecov", ">= 0.5.4"
|
|
23
24
|
gem.add_development_dependency "rr", ">= 1.0.0"
|
|
24
25
|
gem.add_development_dependency "test-unit", ">= 3.0.0"
|
|
25
|
-
gem.add_development_dependency "timecop", "~> 0.
|
|
26
|
+
gem.add_development_dependency "timecop", "~> 0.9.4"
|
|
27
|
+
gem.add_development_dependency "webrick", ">= 1.7.0"
|
|
26
28
|
end
|
|
@@ -43,7 +43,8 @@ module Fluent::Plugin
|
|
|
43
43
|
config_param :date_keys, :array, default: nil
|
|
44
44
|
desc "Specify if the fields in date_keys are of type Integer or Float"
|
|
45
45
|
config_param :parse_string_number_date, :bool, default: false
|
|
46
|
-
|
|
46
|
+
desc "Specify keys to use MongoDB's ObjectId"
|
|
47
|
+
config_param :object_id_keys, :array, default: nil
|
|
47
48
|
|
|
48
49
|
# tag mapping mode
|
|
49
50
|
desc "Use tag_mapped mode"
|
|
@@ -78,7 +79,8 @@ module Fluent::Plugin
|
|
|
78
79
|
@nodes = nil
|
|
79
80
|
@client_options = {}
|
|
80
81
|
@collection_options = {capped: false}
|
|
81
|
-
@
|
|
82
|
+
@date_accessors = {}
|
|
83
|
+
@object_id_accessors = {}
|
|
82
84
|
end
|
|
83
85
|
|
|
84
86
|
# Following limits are heuristic. BSON is sometimes bigger than MessagePack and JSON.
|
|
@@ -164,10 +166,16 @@ module Fluent::Plugin
|
|
|
164
166
|
|
|
165
167
|
if @date_keys
|
|
166
168
|
@date_keys.each { |field_name|
|
|
167
|
-
@
|
|
169
|
+
@date_accessors[field_name.to_s] = record_accessor_create(field_name)
|
|
168
170
|
}
|
|
169
171
|
log.debug "Setup record accessor for every date key"
|
|
170
172
|
end
|
|
173
|
+
if @object_id_keys
|
|
174
|
+
@object_id_keys.each { |field_name|
|
|
175
|
+
@object_id_accessors[field_name.to_s] = record_accessor_create(field_name)
|
|
176
|
+
}
|
|
177
|
+
log.debug "Setup record accessor for every object_id key"
|
|
178
|
+
end
|
|
171
179
|
end
|
|
172
180
|
|
|
173
181
|
def start
|
|
@@ -214,6 +222,7 @@ module Fluent::Plugin
|
|
|
214
222
|
records = []
|
|
215
223
|
time_key = @inject_config.time_key if @inject_config
|
|
216
224
|
date_keys = @date_keys
|
|
225
|
+
object_id_keys = @object_id_keys
|
|
217
226
|
|
|
218
227
|
tag = chunk.metadata.tag
|
|
219
228
|
chunk.msgpack_each {|time, record|
|
|
@@ -222,7 +231,7 @@ module Fluent::Plugin
|
|
|
222
231
|
record[time_key] = Time.at(time || record[time_key]) if time_key
|
|
223
232
|
|
|
224
233
|
if date_keys
|
|
225
|
-
@
|
|
234
|
+
@date_accessors.each_pair { |date_key, date_key_accessor|
|
|
226
235
|
begin
|
|
227
236
|
date_value = date_key_accessor.call(record)
|
|
228
237
|
case date_value
|
|
@@ -265,6 +274,18 @@ module Fluent::Plugin
|
|
|
265
274
|
end
|
|
266
275
|
}
|
|
267
276
|
end
|
|
277
|
+
if object_id_keys
|
|
278
|
+
@object_id_accessors.each_pair { |object_id_key, object_id_key_accessor|
|
|
279
|
+
begin
|
|
280
|
+
object_id_value = object_id_key_accessor.call(record)
|
|
281
|
+
value_to_set = BSON::ObjectId(object_id_value)
|
|
282
|
+
object_id_key_accessor.set(record, value_to_set)
|
|
283
|
+
rescue BSON::ObjectId::Invalid
|
|
284
|
+
log.warn "Failed to parse '#{object_id_key}' field. Expected object_id types are String: #{object_id_value}"
|
|
285
|
+
object_id_key_accessor.set(record, nil)
|
|
286
|
+
end
|
|
287
|
+
}
|
|
288
|
+
end
|
|
268
289
|
records << record
|
|
269
290
|
}
|
|
270
291
|
records
|
|
@@ -330,6 +351,9 @@ module Fluent::Plugin
|
|
|
330
351
|
replace_key_of_hash(r, /^\$/, @replace_dollar_in_key_with)
|
|
331
352
|
end
|
|
332
353
|
end
|
|
354
|
+
records.map! do |r|
|
|
355
|
+
replace_value_of_hash(r)
|
|
356
|
+
end
|
|
333
357
|
|
|
334
358
|
get_collection(database, collection, @collection_options).insert_many(records)
|
|
335
359
|
rescue Mongo::Error::BulkWriteError => e
|
|
@@ -363,5 +387,23 @@ module Fluent::Plugin
|
|
|
363
387
|
hash_or_array
|
|
364
388
|
end
|
|
365
389
|
end
|
|
390
|
+
|
|
391
|
+
INT64_MAX = (2 ** 63) - 1
|
|
392
|
+
def replace_value_of_hash(hash_or_array)
|
|
393
|
+
case hash_or_array
|
|
394
|
+
when Array
|
|
395
|
+
hash_or_array.map { |v| replace_value_of_hash(v) }
|
|
396
|
+
when Hash
|
|
397
|
+
hash_or_array.each_pair { |k, v| hash_or_array[k] = replace_value_of_hash(v) }
|
|
398
|
+
when Integer
|
|
399
|
+
if hash_or_array > INT64_MAX
|
|
400
|
+
BSON::Decimal128.new(hash_or_array.to_s)
|
|
401
|
+
else
|
|
402
|
+
hash_or_array
|
|
403
|
+
end
|
|
404
|
+
else
|
|
405
|
+
hash_or_array
|
|
406
|
+
end
|
|
407
|
+
end
|
|
366
408
|
end
|
|
367
409
|
end
|
|
@@ -249,6 +249,20 @@ class MongoOutputTest < ::Test::Unit::TestCase
|
|
|
249
249
|
assert_equal({"expireAfterSeconds"=>120.0}, expire_after_hash)
|
|
250
250
|
end
|
|
251
251
|
|
|
252
|
+
def test_overflow_integer_value
|
|
253
|
+
d = create_driver
|
|
254
|
+
d.run(default_tag: 'test') do
|
|
255
|
+
time = event_time("2011-01-02 13:14:15 UTC")
|
|
256
|
+
d.feed(time, {'overflow' => (2 ** 63)})
|
|
257
|
+
d.feed(time, {'nested' => {'overflow' => (2 ** 63)}})
|
|
258
|
+
d.feed(time, {'array' => [(2 ** 63)]})
|
|
259
|
+
end
|
|
260
|
+
documents = get_documents
|
|
261
|
+
assert_equal(BSON::Decimal128.new((2 ** 63).to_s), documents[0]['overflow'])
|
|
262
|
+
assert_equal(BSON::Decimal128.new((2 ** 63).to_s), documents[1]['nested']['overflow'])
|
|
263
|
+
assert_equal(BSON::Decimal128.new((2 ** 63).to_s), documents[2]['array'][0])
|
|
264
|
+
end
|
|
265
|
+
|
|
252
266
|
class WriteWithCollectionPlaceholder < self
|
|
253
267
|
def setup
|
|
254
268
|
@tag = 'custom'
|
|
@@ -517,4 +531,95 @@ class MongoOutputTest < ::Test::Unit::TestCase
|
|
|
517
531
|
assert_nil actual_documents.first['updated_at']['time']
|
|
518
532
|
end
|
|
519
533
|
end
|
|
534
|
+
|
|
535
|
+
sub_test_case 'object_id_keys' do
|
|
536
|
+
setup do
|
|
537
|
+
@my_id_str = "507f1f77bcf86cd799439011"
|
|
538
|
+
end
|
|
539
|
+
|
|
540
|
+
def emit_date_documents(d)
|
|
541
|
+
time = event_time("2011-01-02 13:14:15 UTC")
|
|
542
|
+
d.feed(time, {'a' => 1, my_id: @my_id_str})
|
|
543
|
+
time
|
|
544
|
+
end
|
|
545
|
+
|
|
546
|
+
def emit_invalid_date_documents(d)
|
|
547
|
+
time = event_time("2011-01-02 13:14:15 UTC")
|
|
548
|
+
d.feed(time, {'a' => 1, my_id: "Invalid ObjectId String"})
|
|
549
|
+
time
|
|
550
|
+
end
|
|
551
|
+
|
|
552
|
+
def emit_nested_date_documents(d)
|
|
553
|
+
time = event_time("2011-01-02 13:14:15 UTC")
|
|
554
|
+
d.feed(time, {'a' => 1, my_id: { 'id': @my_id_str}})
|
|
555
|
+
time
|
|
556
|
+
end
|
|
557
|
+
|
|
558
|
+
def emit_nested_invalid_date_documents(d)
|
|
559
|
+
time = event_time("2011-01-02 13:14:15 UTC")
|
|
560
|
+
d.feed(time, {'a' => 1, 'my_id': { 'id': "Invalid ObjectId String"}})
|
|
561
|
+
time
|
|
562
|
+
end
|
|
563
|
+
|
|
564
|
+
def test_write_with_object_id_keys
|
|
565
|
+
d = create_driver(default_config + %[
|
|
566
|
+
object_id_keys my_id
|
|
567
|
+
])
|
|
568
|
+
|
|
569
|
+
d.run(default_tag: 'test') do
|
|
570
|
+
emit_date_documents(d)
|
|
571
|
+
end
|
|
572
|
+
|
|
573
|
+
actual_documents = get_documents
|
|
574
|
+
object_id_key = d.instance.object_id_keys.first
|
|
575
|
+
actual_documents.each_with_index { |doc, i|
|
|
576
|
+
assert_equal(i + 1, doc['a'])
|
|
577
|
+
assert doc[object_id_key].is_a?(BSON::ObjectId)
|
|
578
|
+
}
|
|
579
|
+
end
|
|
580
|
+
|
|
581
|
+
def test_write_with_parsed_object_id_key_invalid_string
|
|
582
|
+
d = create_driver(default_config + %[
|
|
583
|
+
object_id_keys my_id
|
|
584
|
+
])
|
|
585
|
+
|
|
586
|
+
d.run(default_tag: 'test') do
|
|
587
|
+
emit_invalid_date_documents(d)
|
|
588
|
+
end
|
|
589
|
+
actual_documents = get_documents
|
|
590
|
+
assert_nil actual_documents.first['my_id']
|
|
591
|
+
end
|
|
592
|
+
|
|
593
|
+
def test_write_with_date_nested_keys
|
|
594
|
+
d = create_driver(default_config + %[
|
|
595
|
+
replace_dot_in_key_with _
|
|
596
|
+
replace_dollar_in_key_with _
|
|
597
|
+
object_id_keys $.my_id.id
|
|
598
|
+
])
|
|
599
|
+
|
|
600
|
+
d.run(default_tag: 'test') do
|
|
601
|
+
emit_nested_date_documents(d)
|
|
602
|
+
end
|
|
603
|
+
|
|
604
|
+
actual_documents = get_documents
|
|
605
|
+
actual_documents.each_with_index { |doc, i|
|
|
606
|
+
assert_equal(i + 1, doc['a'])
|
|
607
|
+
assert doc['my_id']['id'].is_a?(BSON::ObjectId)
|
|
608
|
+
}
|
|
609
|
+
end
|
|
610
|
+
|
|
611
|
+
def test_write_with_parsed_date_nested_key_invalid_string
|
|
612
|
+
d = create_driver(default_config + %[
|
|
613
|
+
replace_dot_in_key_with _
|
|
614
|
+
replace_dollar_in_key_with _
|
|
615
|
+
object_id_keys $.my_id.id
|
|
616
|
+
])
|
|
617
|
+
|
|
618
|
+
d.run(default_tag: 'test') do
|
|
619
|
+
emit_nested_invalid_date_documents(d)
|
|
620
|
+
end
|
|
621
|
+
actual_documents = get_documents
|
|
622
|
+
assert_nil actual_documents.first['my_id']['id']
|
|
623
|
+
end
|
|
624
|
+
end
|
|
520
625
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: fluent-plugin-mongo
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.6.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Masahiro Nakagawa
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: fluentd
|
|
@@ -31,19 +30,39 @@ dependencies:
|
|
|
31
30
|
- !ruby/object:Gem::Version
|
|
32
31
|
version: '2'
|
|
33
32
|
- !ruby/object:Gem::Dependency
|
|
34
|
-
name:
|
|
33
|
+
name: bigdecimal
|
|
35
34
|
requirement: !ruby/object:Gem::Requirement
|
|
36
35
|
requirements:
|
|
37
36
|
- - "~>"
|
|
38
37
|
- !ruby/object:Gem::Version
|
|
39
|
-
version:
|
|
38
|
+
version: '4.0'
|
|
40
39
|
type: :runtime
|
|
41
40
|
prerelease: false
|
|
42
41
|
version_requirements: !ruby/object:Gem::Requirement
|
|
43
42
|
requirements:
|
|
44
43
|
- - "~>"
|
|
45
44
|
- !ruby/object:Gem::Version
|
|
46
|
-
version:
|
|
45
|
+
version: '4.0'
|
|
46
|
+
- !ruby/object:Gem::Dependency
|
|
47
|
+
name: mongo
|
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
|
49
|
+
requirements:
|
|
50
|
+
- - ">="
|
|
51
|
+
- !ruby/object:Gem::Version
|
|
52
|
+
version: 2.15.0
|
|
53
|
+
- - "<"
|
|
54
|
+
- !ruby/object:Gem::Version
|
|
55
|
+
version: 2.19.0
|
|
56
|
+
type: :runtime
|
|
57
|
+
prerelease: false
|
|
58
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
59
|
+
requirements:
|
|
60
|
+
- - ">="
|
|
61
|
+
- !ruby/object:Gem::Version
|
|
62
|
+
version: 2.15.0
|
|
63
|
+
- - "<"
|
|
64
|
+
- !ruby/object:Gem::Version
|
|
65
|
+
version: 2.19.0
|
|
47
66
|
- !ruby/object:Gem::Dependency
|
|
48
67
|
name: rake
|
|
49
68
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -106,14 +125,28 @@ dependencies:
|
|
|
106
125
|
requirements:
|
|
107
126
|
- - "~>"
|
|
108
127
|
- !ruby/object:Gem::Version
|
|
109
|
-
version: 0.
|
|
128
|
+
version: 0.9.4
|
|
110
129
|
type: :development
|
|
111
130
|
prerelease: false
|
|
112
131
|
version_requirements: !ruby/object:Gem::Requirement
|
|
113
132
|
requirements:
|
|
114
133
|
- - "~>"
|
|
115
134
|
- !ruby/object:Gem::Version
|
|
116
|
-
version: 0.
|
|
135
|
+
version: 0.9.4
|
|
136
|
+
- !ruby/object:Gem::Dependency
|
|
137
|
+
name: webrick
|
|
138
|
+
requirement: !ruby/object:Gem::Requirement
|
|
139
|
+
requirements:
|
|
140
|
+
- - ">="
|
|
141
|
+
- !ruby/object:Gem::Version
|
|
142
|
+
version: 1.7.0
|
|
143
|
+
type: :development
|
|
144
|
+
prerelease: false
|
|
145
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
146
|
+
requirements:
|
|
147
|
+
- - ">="
|
|
148
|
+
- !ruby/object:Gem::Version
|
|
149
|
+
version: 1.7.0
|
|
117
150
|
description: MongoDB plugin for Fluentd
|
|
118
151
|
email: repeatedly@gmail.com
|
|
119
152
|
executables:
|
|
@@ -121,8 +154,9 @@ executables:
|
|
|
121
154
|
extensions: []
|
|
122
155
|
extra_rdoc_files: []
|
|
123
156
|
files:
|
|
157
|
+
- ".github/dependabot.yml"
|
|
158
|
+
- ".github/workflows/linux.yml"
|
|
124
159
|
- ".gitignore"
|
|
125
|
-
- ".travis.yml"
|
|
126
160
|
- AUTHORS
|
|
127
161
|
- ChangeLog
|
|
128
162
|
- Gemfile
|
|
@@ -144,7 +178,6 @@ homepage: https://github.com/fluent/fluent-plugin-mongo
|
|
|
144
178
|
licenses:
|
|
145
179
|
- Apache-2.0
|
|
146
180
|
metadata: {}
|
|
147
|
-
post_install_message:
|
|
148
181
|
rdoc_options: []
|
|
149
182
|
require_paths:
|
|
150
183
|
- lib
|
|
@@ -159,8 +192,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
159
192
|
- !ruby/object:Gem::Version
|
|
160
193
|
version: '0'
|
|
161
194
|
requirements: []
|
|
162
|
-
rubygems_version:
|
|
163
|
-
signing_key:
|
|
195
|
+
rubygems_version: 4.0.3
|
|
164
196
|
specification_version: 4
|
|
165
197
|
summary: MongoDB plugin for Fluentd
|
|
166
198
|
test_files:
|