fluent-plugin-mongo 1.2.0 → 1.4.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 +5 -5
- data/.travis.yml +4 -10
- data/ChangeLog +21 -0
- data/README.rdoc +7 -1
- data/VERSION +1 -1
- data/fluent-plugin-mongo.gemspec +1 -2
- data/lib/fluent/plugin/in_mongo_tail.rb +3 -3
- data/lib/fluent/plugin/mongo_auth.rb +12 -10
- data/lib/fluent/plugin/out_mongo.rb +51 -6
- data/lib/fluent/plugin/out_mongo_replset.rb +2 -2
- data/test/plugin/test_in_mongo_tail.rb +3 -3
- data/test/plugin/test_out_mongo.rb +119 -1
- metadata +5 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: baad354dcd89624e9e6ed224718d569de6a37329e7a0339d2b8f41011ba0b970
|
4
|
+
data.tar.gz: 15c2c50509c70a325fe6c053a09062e5701e61003e550d316ffa491e9cc99b75
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 59aeae091430fae5bb089245f24d85e8e204a11f7d886f0b53b7cde6af054c0e5b9c2fc94f17f2b0dfdc7fb79c562be7112adfafae71583e8fcf8b18aa8766ab
|
7
|
+
data.tar.gz: 242c5d3d7a58f0be87514909749b066942118d90c24e9990f719eff5956919556a86ae24c427c8d21e55b70b39d03b8796d10c4493d00d7c41a7be635009f738
|
data/.travis.yml
CHANGED
@@ -1,9 +1,8 @@
|
|
1
1
|
rvm:
|
2
|
-
- 2.
|
3
|
-
- 2.
|
4
|
-
- 2.
|
5
|
-
- 2.
|
6
|
-
- 2.5.0
|
2
|
+
- 2.4.10
|
3
|
+
- 2.5
|
4
|
+
- 2.6
|
5
|
+
- 2.7
|
7
6
|
- ruby-head
|
8
7
|
|
9
8
|
gemfile:
|
@@ -12,11 +11,6 @@ gemfile:
|
|
12
11
|
services:
|
13
12
|
- mongodb
|
14
13
|
|
15
|
-
before_install:
|
16
|
-
- gem update --system
|
17
|
-
before_script:
|
18
|
-
- git submodule update -i
|
19
|
-
|
20
14
|
script: bundle exec rake test
|
21
15
|
|
22
16
|
matrix:
|
data/ChangeLog
CHANGED
@@ -1,3 +1,24 @@
|
|
1
|
+
Release 1.4.1 - 2020/08/21
|
2
|
+
|
3
|
+
* out_mongo: Add expire_after parameter
|
4
|
+
|
5
|
+
Release 1.4.0 - 2020/04/28
|
6
|
+
|
7
|
+
* out_mongo: Add date_keys parameter to support MongoDB Date object in record fields.
|
8
|
+
|
9
|
+
Release 1.3.0 - 2019/04/24
|
10
|
+
|
11
|
+
* out_mongo: Support auth_mech parameter to allow other authentication
|
12
|
+
* in_mongo_tail: Fix replicat set issue
|
13
|
+
|
14
|
+
Release 1.2.2 - 2019/04/01
|
15
|
+
|
16
|
+
* out_mongo: Don't handle database placholders when specifying connection_string parameter
|
17
|
+
|
18
|
+
Release 1.2.1 - 2018/12/18
|
19
|
+
|
20
|
+
* out_mongo_replset: Fix internal signature mismatch
|
21
|
+
|
1
22
|
Release 1.2.0 - 2018/11/29
|
2
23
|
|
3
24
|
* out_mongo: Support placeholder in database parameter
|
data/README.rdoc
CHANGED
@@ -53,6 +53,12 @@ Use _mongo_ type in match.
|
|
53
53
|
capped
|
54
54
|
capped_size 100m
|
55
55
|
|
56
|
+
# Specify date fields in record to use MongoDB's Date object (Optional) default: nil
|
57
|
+
# Supported data types are String/Integer/Float/Fuentd EventTime.
|
58
|
+
# For Integer type, milliseconds epoch and seconds epoch are supported.
|
59
|
+
# eg: updated_at: "2020-02-01T08:22:23.780Z" or updated_at: 1580546457010
|
60
|
+
date_keys updated_at
|
61
|
+
|
56
62
|
# Other buffer configurations here
|
57
63
|
</match>
|
58
64
|
|
@@ -223,7 +229,7 @@ BSON records which include '.' or start with '$' are invalid and they will be st
|
|
223
229
|
...
|
224
230
|
# replace '.' in keys with '__dot__'
|
225
231
|
replace_dot_in_key_with __dot__
|
226
|
-
|
232
|
+
|
227
233
|
# replace '$' in keys with '__dollar__'
|
228
234
|
# Note: This replaces '$' only on first character
|
229
235
|
replace_dollar_in_key_with __dollar__
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.4.1
|
data/fluent-plugin-mongo.gemspec
CHANGED
@@ -10,14 +10,13 @@ Gem::Specification.new do |gem|
|
|
10
10
|
gem.version = File.read("VERSION").strip
|
11
11
|
gem.authors = ["Masahiro Nakagawa"]
|
12
12
|
gem.email = "repeatedly@gmail.com"
|
13
|
-
gem.has_rdoc = false
|
14
13
|
#gem.platform = Gem::Platform::RUBY
|
15
14
|
gem.files = `git ls-files`.split("\n")
|
16
15
|
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
16
|
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
18
17
|
gem.require_paths = ['lib']
|
19
18
|
|
20
|
-
gem.add_dependency "fluentd", [">= 0.14.
|
19
|
+
gem.add_dependency "fluentd", [">= 0.14.22", "< 2"]
|
21
20
|
gem.add_runtime_dependency "mongo", "~> 2.6.0"
|
22
21
|
gem.add_development_dependency "rake", ">= 0.9.2"
|
23
22
|
gem.add_development_dependency "simplecov", ">= 0.5.4"
|
@@ -118,10 +118,10 @@ module Fluent::Plugin
|
|
118
118
|
private
|
119
119
|
|
120
120
|
def client
|
121
|
-
@client_options[:database] = @database
|
121
|
+
@client_options[:database] = @database if @database
|
122
122
|
@client_options[:user] = @user if @user
|
123
123
|
@client_options[:password] = @password if @password
|
124
|
-
Mongo::Client.new(
|
124
|
+
Mongo::Client.new(node_string, @client_options)
|
125
125
|
end
|
126
126
|
|
127
127
|
def get_collection
|
@@ -133,7 +133,7 @@ module Fluent::Plugin
|
|
133
133
|
def node_string
|
134
134
|
case
|
135
135
|
when @database
|
136
|
-
"#{@host}:#{@port}"
|
136
|
+
["#{@host}:#{@port}"]
|
137
137
|
when @url
|
138
138
|
@url
|
139
139
|
end
|
@@ -8,23 +8,25 @@ module Fluent
|
|
8
8
|
config_param :password, :string, default: nil, secret: true
|
9
9
|
desc "MongoDB authentication database"
|
10
10
|
config_param :auth_source, :string, default: nil
|
11
|
+
desc "MongoDB authentication mechanism"
|
12
|
+
config_param :auth_mech, :string, default: nil
|
11
13
|
}
|
12
14
|
end
|
13
15
|
end
|
14
16
|
|
15
17
|
module MongoAuth
|
16
18
|
def authenticate(client)
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
rescue Mongo::Auth::Unauthorized => e
|
25
|
-
log.fatal e
|
26
|
-
exit!
|
19
|
+
begin
|
20
|
+
if [@user, @password, @auth_source].all?
|
21
|
+
client = client.with(user: @user, password: @password, auth_source: @auth_source)
|
22
|
+
elsif [@user, @password].all?
|
23
|
+
client = client.with(user: @user, password: @password)
|
24
|
+
elsif [@user, @auth_source, @auth_mech].all?
|
25
|
+
client = client.with(user: @user, auth_source: @auth_source, auth_mech: @auth_mech.to_sym)
|
27
26
|
end
|
27
|
+
rescue Mongo::Auth::Unauthorized => e
|
28
|
+
log.fatal e
|
29
|
+
exit!
|
28
30
|
end
|
29
31
|
client
|
30
32
|
end
|
@@ -38,6 +38,10 @@ module Fluent::Plugin
|
|
38
38
|
desc "Replace dollar with specified string"
|
39
39
|
config_param :replace_dollar_in_key_with, :string, default: nil
|
40
40
|
|
41
|
+
# Additional date field to be used to Date object
|
42
|
+
desc "Specify keys to use MongoDB's Date. Supported value types are Integer/Float/EventTime/String"
|
43
|
+
config_param :date_keys, :array, default: nil
|
44
|
+
|
41
45
|
# tag mapping mode
|
42
46
|
desc "Use tag_mapped mode"
|
43
47
|
config_param :tag_mapped, :bool, default: false,
|
@@ -45,6 +49,9 @@ module Fluent::Plugin
|
|
45
49
|
desc "Remove tag prefix"
|
46
50
|
config_param :remove_tag_prefix, :string, default: nil,
|
47
51
|
deprecated: "use @label instead for event routing."
|
52
|
+
# expire indexes
|
53
|
+
desc "Specify expire after seconds"
|
54
|
+
config_param :expire_after, :time, default: 0
|
48
55
|
|
49
56
|
# SSL connection
|
50
57
|
config_param :ssl, :bool, default: false
|
@@ -54,6 +61,7 @@ module Fluent::Plugin
|
|
54
61
|
config_param :ssl_verify, :bool, default: false
|
55
62
|
config_param :ssl_ca_cert, :string, default: nil
|
56
63
|
|
64
|
+
|
57
65
|
config_section :buffer do
|
58
66
|
config_set_default :@type, DEFAULT_BUFFER_TYPE
|
59
67
|
config_set_default :chunk_keys, ['tag']
|
@@ -108,12 +116,12 @@ module Fluent::Plugin
|
|
108
116
|
|
109
117
|
super
|
110
118
|
|
111
|
-
if @
|
112
|
-
raise Fluent::ConfigError,
|
119
|
+
if @auth_mech && !Mongo::Auth::SOURCES.has_key?(@auth_mech.to_sym)
|
120
|
+
raise Fluent::ConfigError, Mongo::Auth::InvalidMechanism.new(@auth_mech.to_sym)
|
113
121
|
end
|
114
122
|
|
115
|
-
|
116
|
-
|
123
|
+
if @connection_string.nil? && @database.nil?
|
124
|
+
raise Fluent::ConfigError, "connection_string or database parameter is required"
|
117
125
|
end
|
118
126
|
|
119
127
|
if conf.has_key?('tag_mapped')
|
@@ -172,8 +180,9 @@ module Fluent::Plugin
|
|
172
180
|
end
|
173
181
|
|
174
182
|
def write(chunk)
|
175
|
-
collection_name = extract_placeholders(@collection, chunk
|
176
|
-
|
183
|
+
collection_name = extract_placeholders(@collection, chunk)
|
184
|
+
# In connection_string case, we shouldn't handle extract_placeholers for @database.
|
185
|
+
database_name = extract_placeholders(@database, chunk) unless @connection_string
|
177
186
|
operate(database_name, format_collection_name(collection_name), collect_records(chunk))
|
178
187
|
end
|
179
188
|
|
@@ -193,11 +202,40 @@ module Fluent::Plugin
|
|
193
202
|
def collect_records(chunk)
|
194
203
|
records = []
|
195
204
|
time_key = @inject_config.time_key if @inject_config
|
205
|
+
date_keys = @date_keys
|
206
|
+
|
196
207
|
tag = chunk.metadata.tag
|
197
208
|
chunk.msgpack_each {|time, record|
|
198
209
|
record = inject_values_to_record(tag, time, record)
|
199
210
|
# MongoDB uses BSON's Date for time.
|
200
211
|
record[time_key] = Time.at(time || record[time_key]) if time_key
|
212
|
+
|
213
|
+
if date_keys
|
214
|
+
date_keys.each { |date_key|
|
215
|
+
begin
|
216
|
+
date_value = record[date_key]
|
217
|
+
case date_value
|
218
|
+
when Fluent::EventTime
|
219
|
+
record[date_key] = date_value.to_time
|
220
|
+
when Integer
|
221
|
+
record[date_key] = if date_value > 9999999999
|
222
|
+
# epoch with milliseconds: e.g. javascript
|
223
|
+
Time.at(date_value / 1000.0)
|
224
|
+
else
|
225
|
+
# epoch with seconds: e.g. ruby
|
226
|
+
Time.at(date_value)
|
227
|
+
end
|
228
|
+
when Float
|
229
|
+
record[date_key] = Time.at(date_value)
|
230
|
+
else
|
231
|
+
record[date_key] = Time.parse(date_value)
|
232
|
+
end
|
233
|
+
rescue ArgumentError
|
234
|
+
log.warn "Failed to parse '#{date_key}' field. Expected date types are Integer/Float/String/EventTime: #{record[date_key]}"
|
235
|
+
record[date_key] = nil
|
236
|
+
end
|
237
|
+
}
|
238
|
+
end
|
201
239
|
records << record
|
202
240
|
}
|
203
241
|
records
|
@@ -235,6 +273,13 @@ module Fluent::Plugin
|
|
235
273
|
unless collection_exists?(name)
|
236
274
|
log.trace "Create collection #{name} with options #{options}"
|
237
275
|
@client[name, options].create
|
276
|
+
if @expire_after > 0 && @inject_config
|
277
|
+
log.trace "Create expiring index with key: \"#{@inject_config.time_key}\" and seconds: \"#{@expire_after}\""
|
278
|
+
@client[name].indexes.create_one(
|
279
|
+
{"#{@inject_config.time_key}": 1},
|
280
|
+
expire_after: @expire_after
|
281
|
+
)
|
282
|
+
end
|
238
283
|
end
|
239
284
|
@collections[name] = true
|
240
285
|
@client[name]
|
@@ -100,7 +100,7 @@ class MongoTailInputTest < Test::Unit::TestCase
|
|
100
100
|
end
|
101
101
|
events = d.events
|
102
102
|
assert_equal "input.mongo", events[0][0]
|
103
|
-
|
103
|
+
assert events[0][1].is_a?(Fluent::EventTime)
|
104
104
|
assert_equal "test", events[0][2]["message"]
|
105
105
|
end
|
106
106
|
|
@@ -114,7 +114,7 @@ class MongoTailInputTest < Test::Unit::TestCase
|
|
114
114
|
time_key time
|
115
115
|
])
|
116
116
|
d.run(expect_records: 1, timeout: 5) do
|
117
|
-
@client[collection_name].insert_one({message: "test", tag: "user.defined", time: Fluent::Engine.now})
|
117
|
+
@client[collection_name].insert_one({message: "test", tag: "user.defined", time: Time.at(Fluent::Engine.now)})
|
118
118
|
end
|
119
119
|
events = d.events
|
120
120
|
assert_equal "user.defined", events[0][0]
|
@@ -138,7 +138,7 @@ class MongoTailInputTest < Test::Unit::TestCase
|
|
138
138
|
events = d.events
|
139
139
|
assert_equal 1, events.size
|
140
140
|
assert_equal "input.mongo.last_id", events[0][0]
|
141
|
-
|
141
|
+
assert events[0][1].is_a?(Fluent::EventTime)
|
142
142
|
assert_equal "can obtain", events[0][2]["message"]
|
143
143
|
end
|
144
144
|
end
|
@@ -92,6 +92,22 @@ class MongoOutputTest < ::Test::Unit::TestCase
|
|
92
92
|
end
|
93
93
|
end
|
94
94
|
|
95
|
+
def test_configure_auth_mechanism
|
96
|
+
Mongo::Auth::SOURCES.each do |key, value|
|
97
|
+
conf = default_config + %[
|
98
|
+
auth_mech #{key}
|
99
|
+
]
|
100
|
+
d = create_driver(conf)
|
101
|
+
assert_equal(key.to_s, d.instance.auth_mech)
|
102
|
+
end
|
103
|
+
assert_raise Fluent::ConfigError do
|
104
|
+
conf = default_config + %[
|
105
|
+
auth_mech invalid
|
106
|
+
]
|
107
|
+
d = create_driver(conf)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
95
111
|
def test_configure_with_ssl
|
96
112
|
conf = default_config + %[
|
97
113
|
ssl true
|
@@ -164,6 +180,10 @@ class MongoOutputTest < ::Test::Unit::TestCase
|
|
164
180
|
@client[collection].find.to_a.map {|e| e.delete('_id'); e}
|
165
181
|
end
|
166
182
|
|
183
|
+
def get_indexes(collection = collection_name)
|
184
|
+
@client[collection].indexes
|
185
|
+
end
|
186
|
+
|
167
187
|
def emit_documents(d)
|
168
188
|
time = event_time("2011-01-02 13:14:15 UTC")
|
169
189
|
d.feed(time, {'a' => 1})
|
@@ -183,6 +203,52 @@ class MongoOutputTest < ::Test::Unit::TestCase
|
|
183
203
|
assert_equal(expected, actual_documents)
|
184
204
|
end
|
185
205
|
|
206
|
+
def test_write_with_connection_string
|
207
|
+
d = create_driver(%[
|
208
|
+
@type mongo
|
209
|
+
connection_string mongodb://localhost:#{port}/#{database_name}
|
210
|
+
collection #{collection_name}
|
211
|
+
capped
|
212
|
+
capped_size 100
|
213
|
+
])
|
214
|
+
assert_equal("mongodb://localhost:#{port}/#{database_name}", d.instance.connection_string)
|
215
|
+
assert_nil d.instance.database
|
216
|
+
|
217
|
+
d.run(default_tag: 'test') do
|
218
|
+
emit_documents(d)
|
219
|
+
end
|
220
|
+
actual_documents = get_documents
|
221
|
+
time = event_time("2011-01-02 13:14:15 UTC")
|
222
|
+
expected = [{'a' => 1, d.instance.inject_config.time_key => Time.at(time).localtime},
|
223
|
+
{'a' => 2, d.instance.inject_config.time_key => Time.at(time).localtime}]
|
224
|
+
assert_equal(expected, actual_documents)
|
225
|
+
end
|
226
|
+
|
227
|
+
def test_write_with_expire_index
|
228
|
+
d = create_driver(%[
|
229
|
+
@type mongo
|
230
|
+
connection_string mongodb://localhost:#{port}/#{database_name}
|
231
|
+
collection #{collection_name}
|
232
|
+
capped
|
233
|
+
capped_size 100
|
234
|
+
expire_after 120
|
235
|
+
])
|
236
|
+
assert_equal("mongodb://localhost:#{port}/#{database_name}", d.instance.connection_string)
|
237
|
+
assert_nil d.instance.database
|
238
|
+
d.run(default_tag: 'test') do
|
239
|
+
emit_documents(d)
|
240
|
+
end
|
241
|
+
actual_documents = get_documents
|
242
|
+
time = event_time("2011-01-02 13:14:15 UTC")
|
243
|
+
expected = [{'a' => 1, d.instance.inject_config.time_key => Time.at(time).localtime},
|
244
|
+
{'a' => 2, d.instance.inject_config.time_key => Time.at(time).localtime}]
|
245
|
+
assert_equal(expected, actual_documents)
|
246
|
+
|
247
|
+
indexes = get_indexes()
|
248
|
+
expire_after_hash = indexes.map {|e| e.select{|k, v| k == "expireAfterSeconds"} }.reject{|e| e.empty?}.first
|
249
|
+
assert_equal({"expireAfterSeconds"=>120.0}, expire_after_hash)
|
250
|
+
end
|
251
|
+
|
186
252
|
class WriteWithCollectionPlaceholder < self
|
187
253
|
def setup
|
188
254
|
@tag = 'custom'
|
@@ -278,7 +344,7 @@ class MongoOutputTest < ::Test::Unit::TestCase
|
|
278
344
|
"$foo$bar" => "baz"
|
279
345
|
}
|
280
346
|
],
|
281
|
-
|
347
|
+
})
|
282
348
|
end
|
283
349
|
|
284
350
|
documents = get_documents
|
@@ -351,4 +417,56 @@ class MongoOutputTest < ::Test::Unit::TestCase
|
|
351
417
|
assert authenticate(@client)
|
352
418
|
end
|
353
419
|
end
|
420
|
+
|
421
|
+
sub_test_case 'date_keys' do
|
422
|
+
setup do
|
423
|
+
@updated_at_str = "2020-02-01T08:22:23.780Z"
|
424
|
+
@updated_at_t = Time.parse(@updated_at_str)
|
425
|
+
end
|
426
|
+
|
427
|
+
def emit_date_documents(d)
|
428
|
+
time = event_time("2011-01-02 13:14:15 UTC")
|
429
|
+
d.feed(time, {'a' => 1, updated_at: @updated_at_str})
|
430
|
+
d.feed(time, {'a' => 2, updated_at: @updated_at_t.to_f})
|
431
|
+
d.feed(time, {'a' => 3, updated_at: @updated_at_t.to_i})
|
432
|
+
time
|
433
|
+
end
|
434
|
+
|
435
|
+
def emit_invalid_date_documents(d)
|
436
|
+
time = event_time("2011-01-02 13:14:15 UTC")
|
437
|
+
d.feed(time, {'a' => 1, updated_at: "Invalid Date String"})
|
438
|
+
time
|
439
|
+
end
|
440
|
+
|
441
|
+
def test_write_with_date_keys
|
442
|
+
d = create_driver(default_config + %[
|
443
|
+
date_keys updated_at
|
444
|
+
time_key created_at
|
445
|
+
])
|
446
|
+
|
447
|
+
d.run(default_tag: 'test') do
|
448
|
+
emit_date_documents(d)
|
449
|
+
end
|
450
|
+
|
451
|
+
actual_documents = get_documents
|
452
|
+
date_key = d.instance.date_keys.first
|
453
|
+
actual_documents.each_with_index { |doc, i|
|
454
|
+
assert_equal(i + 1, doc['a'])
|
455
|
+
assert doc[date_key].is_a?(Time)
|
456
|
+
}
|
457
|
+
end
|
458
|
+
|
459
|
+
def test_write_with_parsed_date_key_invalid_string
|
460
|
+
d = create_driver(default_config + %[
|
461
|
+
date_keys updated_at
|
462
|
+
time_key created_at
|
463
|
+
])
|
464
|
+
|
465
|
+
d.run(default_tag: 'test') do
|
466
|
+
emit_invalid_date_documents(d)
|
467
|
+
end
|
468
|
+
actual_documents = get_documents
|
469
|
+
assert_nil actual_documents.first['updated_at']
|
470
|
+
end
|
471
|
+
end
|
354
472
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
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.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Masahiro Nakagawa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-08-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|
@@ -16,7 +16,7 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.14.
|
19
|
+
version: 0.14.22
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: '2'
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.14.
|
29
|
+
version: 0.14.22
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '2'
|
@@ -159,8 +159,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
159
159
|
- !ruby/object:Gem::Version
|
160
160
|
version: '0'
|
161
161
|
requirements: []
|
162
|
-
|
163
|
-
rubygems_version: 2.6.14.1
|
162
|
+
rubygems_version: 3.0.3
|
164
163
|
signing_key:
|
165
164
|
specification_version: 4
|
166
165
|
summary: MongoDB plugin for Fluentd
|