fluentd 1.16.10 → 1.16.11
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/workflows/test.yml +2 -2
- data/CHANGELOG.md +21 -0
- data/fluentd.gemspec +5 -0
- data/lib/fluent/plugin/out_forward.rb +10 -0
- data/lib/fluent/version.rb +1 -1
- data/test/command/test_fluentd.rb +1 -1
- data/test/config/test_dsl.rb +8 -1
- data/test/config/test_element.rb +2 -2
- data/test/plugin/test_filter_stdout.rb +4 -4
- data/test/plugin/test_formatter_hash.rb +2 -2
- data/test/plugin/test_out_forward.rb +23 -0
- data/test/plugin/test_out_stdout.rb +3 -3
- data/test/plugin_helper/test_child_process.rb +4 -4
- data/test/test_configdsl.rb +8 -1
- data/test/test_supervisor.rb +4 -2
- metadata +44 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 255e643927676bb2d1414a29cb709d70b72e562a09d83a1a2532c6be1e0dfa89
|
|
4
|
+
data.tar.gz: 34703e891bc6cf823c88b98fa920fe049d54da981c466be21e63a684966d6988
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3be646bf7c7ce861dcd8e842527d80d49eba0c3fc899f7f972db30e443bd8a749073167f1d8bcb70d24c8ab6a636388c2b0ea19423f58ed0f57687198b7b8dfb
|
|
7
|
+
data.tar.gz: a7740e6e6b8ec714811ce128725964a4108b456e0f12d5ef8a98ea95a151fba151fda0ac54ca49ed42c213b66d45b20f9879948f7b04ea3f00d2808816221646
|
data/.github/workflows/test.yml
CHANGED
|
@@ -26,7 +26,7 @@ jobs:
|
|
|
26
26
|
fail-fast: false
|
|
27
27
|
matrix:
|
|
28
28
|
os: ['ubuntu-latest', 'macos-latest', 'windows-latest']
|
|
29
|
-
ruby-version: ['3.3', '3.2', '3.1', '3.0', '2.7']
|
|
29
|
+
ruby-version: ['3.4', '3.3', '3.2', '3.1', '3.0', '2.7']
|
|
30
30
|
name: Ruby ${{ matrix.ruby-version }} on ${{ matrix.os }}
|
|
31
31
|
steps:
|
|
32
32
|
- uses: actions/checkout@v5
|
|
@@ -48,7 +48,7 @@ jobs:
|
|
|
48
48
|
strategy:
|
|
49
49
|
fail-fast: false
|
|
50
50
|
matrix:
|
|
51
|
-
ruby-version: ['3.3', '3.2', '3.1', '3.0', '2.7']
|
|
51
|
+
ruby-version: ['3.4', '3.3', '3.2', '3.1', '3.0', '2.7']
|
|
52
52
|
name: Windows service (Ruby ${{ matrix.ruby-version }})
|
|
53
53
|
steps:
|
|
54
54
|
- uses: actions/checkout@v5
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# v1.16
|
|
2
2
|
|
|
3
|
+
## Release v1.16.11 - 2025/12/12
|
|
4
|
+
|
|
5
|
+
### Bug Fix
|
|
6
|
+
|
|
7
|
+
* out_forward: fix issue where could cause output to stop when using `<security>` and TLS setting together under unstable network environments
|
|
8
|
+
https://github.com/fluent/fluentd/pull/5137
|
|
9
|
+
|
|
10
|
+
### Misc
|
|
11
|
+
|
|
12
|
+
* Add missing gem dependency on Ruby 3.4.
|
|
13
|
+
https://github.com/fluent/fluentd/pull/5172
|
|
14
|
+
|
|
15
|
+
* CI improvemnts
|
|
16
|
+
https://github.com/fluent/fluentd/pull/5135
|
|
17
|
+
https://github.com/fluent/fluentd/pull/5175
|
|
18
|
+
https://github.com/fluent/fluentd/pull/5182
|
|
19
|
+
https://github.com/fluent/fluentd/pull/5183
|
|
20
|
+
https://github.com/fluent/fluentd/pull/5185
|
|
21
|
+
https://github.com/fluent/fluentd/pull/5187
|
|
22
|
+
https://github.com/fluent/fluentd/pull/5189
|
|
23
|
+
|
|
3
24
|
## Release v1.16.10 - 2025/09/12
|
|
4
25
|
|
|
5
26
|
### Bug Fix
|
data/fluentd.gemspec
CHANGED
|
@@ -31,6 +31,11 @@ Gem::Specification.new do |gem|
|
|
|
31
31
|
gem.add_runtime_dependency("webrick", ["~> 1.4"])
|
|
32
32
|
gem.add_runtime_dependency("console", ["< 1.24"])
|
|
33
33
|
|
|
34
|
+
# gems that aren't default gems as of Ruby 3.4
|
|
35
|
+
gem.add_runtime_dependency("base64", ["~> 0.2"])
|
|
36
|
+
gem.add_runtime_dependency("csv", ["~> 3.2"])
|
|
37
|
+
gem.add_runtime_dependency("drb", ["~> 2.2"])
|
|
38
|
+
|
|
34
39
|
# gems that aren't default gems as of Ruby 3.5
|
|
35
40
|
gem.add_runtime_dependency("logger", ["~> 1.6"])
|
|
36
41
|
|
|
@@ -610,7 +610,17 @@ module Fluent::Plugin
|
|
|
610
610
|
end
|
|
611
611
|
|
|
612
612
|
def establish_connection(sock, ri)
|
|
613
|
+
start_time = Fluent::Clock.now
|
|
614
|
+
timeout = @sender.hard_timeout
|
|
615
|
+
|
|
613
616
|
while ri.state != :established
|
|
617
|
+
# Check for timeout to prevent infinite loop
|
|
618
|
+
if Fluent::Clock.now - start_time > timeout
|
|
619
|
+
@log.warn "handshake timeout after #{timeout}s", host: @host, port: @port
|
|
620
|
+
disable!
|
|
621
|
+
break
|
|
622
|
+
end
|
|
623
|
+
|
|
614
624
|
begin
|
|
615
625
|
# TODO: On Ruby 2.2 or earlier, read_nonblock doesn't work expectedly.
|
|
616
626
|
# We need rewrite around here using new socket/server plugin helper.
|
data/lib/fluent/version.rb
CHANGED
data/test/config/test_dsl.rb
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
require_relative '../helper'
|
|
2
2
|
require 'fluent/config/element'
|
|
3
3
|
require "fluent/config/dsl"
|
|
4
|
+
require 'tempfile'
|
|
4
5
|
|
|
5
6
|
TMP_DIR = File.dirname(__FILE__) + "/tmp/config_dsl#{ENV['TEST_ENV_NUMBER']}"
|
|
6
7
|
def write_config(path, data)
|
|
@@ -358,9 +359,13 @@ module Fluent::Config
|
|
|
358
359
|
sub_test_case '.parse' do
|
|
359
360
|
test 'can get result of Kernel.open() by ruby.open()' do
|
|
360
361
|
uname_string = `uname -a`
|
|
362
|
+
tmpfile = Tempfile.create('fluentd-test')
|
|
363
|
+
tmpfile.write(uname_string)
|
|
364
|
+
tmpfile.close
|
|
365
|
+
|
|
361
366
|
root = Fluent::Config::DSL::Parser.parse(<<DSL)
|
|
362
367
|
worker {
|
|
363
|
-
uname_str = ruby.open(
|
|
368
|
+
uname_str = ruby.open("#{tmpfile.path}"){|out| out.read}
|
|
364
369
|
source {
|
|
365
370
|
uname uname_str
|
|
366
371
|
}
|
|
@@ -372,6 +377,8 @@ DSL
|
|
|
372
377
|
assert_equal('source', source.name)
|
|
373
378
|
assert_equal(1, source.keys.size)
|
|
374
379
|
assert_equal(uname_string, source['uname'])
|
|
380
|
+
ensure
|
|
381
|
+
File.delete(tmpfile.path)
|
|
375
382
|
end
|
|
376
383
|
|
|
377
384
|
test 'accepts ruby keyword with block, which allow to use methods included from ::Kernel' do
|
data/test/config/test_element.rb
CHANGED
|
@@ -282,8 +282,8 @@ CONF
|
|
|
282
282
|
dump = <<-CONF
|
|
283
283
|
name:ROOT, arg:, {\"k1\"=>\"v1\"}, [name:test, arg:ext, {\"k2\"=>\"v2\"}, []]
|
|
284
284
|
CONF
|
|
285
|
-
assert_not_equal(e.to_s, e.inspect)
|
|
286
|
-
assert_equal(dump.chomp, e.inspect)
|
|
285
|
+
assert_not_equal(e.to_s, e.inspect.gsub(' => ', '=>'))
|
|
286
|
+
assert_equal(dump.chomp, e.inspect.gsub(' => ', '=>'))
|
|
287
287
|
end
|
|
288
288
|
end
|
|
289
289
|
|
|
@@ -86,12 +86,12 @@ class StdoutFilterTest < Test::Unit::TestCase
|
|
|
86
86
|
d = create_driver(CONFIG + config_element("", "", { "output_type" => "hash" }))
|
|
87
87
|
etime = event_time("2016-10-07 21:09:31.012345678 UTC")
|
|
88
88
|
out = capture_log(d) { filter(d, etime, {'test' => 'test'}) }
|
|
89
|
-
assert_equal "2016-10-07 21:09:31.012345678 +0000 filter.test: {\"test\"=>\"test\"}\n", out
|
|
89
|
+
assert_equal "2016-10-07 21:09:31.012345678 +0000 filter.test: {\"test\"=>\"test\"}\n", out.gsub(' => ', '=>')
|
|
90
90
|
|
|
91
91
|
# NOTE: Float::NAN is not jsonable, but hash string can output it.
|
|
92
92
|
d = create_driver(CONFIG + config_element("", "", { "output_type" => "hash" }))
|
|
93
93
|
out = capture_log(d) { filter(d, etime, {'test' => Float::NAN}) }
|
|
94
|
-
assert_equal "2016-10-07 21:09:31.012345678 +0000 filter.test: {\"test\"=>NaN}\n", out
|
|
94
|
+
assert_equal "2016-10-07 21:09:31.012345678 +0000 filter.test: {\"test\"=>NaN}\n", out.gsub(' => ', '=>')
|
|
95
95
|
end
|
|
96
96
|
|
|
97
97
|
# Use include_time_key to output the message's time
|
|
@@ -172,7 +172,7 @@ class StdoutFilterTest < Test::Unit::TestCase
|
|
|
172
172
|
d = create_driver(conf)
|
|
173
173
|
etime = event_time("2016-10-07 21:09:31.012345678 UTC")
|
|
174
174
|
out = capture_log(d) { filter(d, etime, {'test' => 'test'}) }
|
|
175
|
-
assert_equal "2016-10-07 21:09:31.012345678 +0000 filter.test: {\"test\"=>\"test\"}\n", out
|
|
175
|
+
assert_equal "2016-10-07 21:09:31.012345678 +0000 filter.test: {\"test\"=>\"test\"}\n", out.gsub(' => ', '=>')
|
|
176
176
|
end
|
|
177
177
|
|
|
178
178
|
def test_hash_nan
|
|
@@ -182,7 +182,7 @@ class StdoutFilterTest < Test::Unit::TestCase
|
|
|
182
182
|
d = create_driver(conf)
|
|
183
183
|
etime = event_time("2016-10-07 21:09:31.012345678 UTC")
|
|
184
184
|
out = capture_log(d) { filter(d, etime, {'test' => Float::NAN}) }
|
|
185
|
-
assert_equal "2016-10-07 21:09:31.012345678 +0000 filter.test: {\"test\"=>NaN}\n", out
|
|
185
|
+
assert_equal "2016-10-07 21:09:31.012345678 +0000 filter.test: {\"test\"=>NaN}\n", out.gsub(' => ', '=>')
|
|
186
186
|
end
|
|
187
187
|
|
|
188
188
|
# Use include_time_key to output the message's time
|
|
@@ -26,13 +26,13 @@ class HashFormatterTest < ::Test::Unit::TestCase
|
|
|
26
26
|
d = create_driver({"newline" => newline_conf})
|
|
27
27
|
formatted = d.instance.format(tag, @time, record)
|
|
28
28
|
|
|
29
|
-
assert_equal(%Q!{"message"=>"awesome", "greeting"=>"hello"}#{newline}!, formatted.encode(Encoding::UTF_8))
|
|
29
|
+
assert_equal(%Q!{"message"=>"awesome", "greeting"=>"hello"}#{newline}!, formatted.gsub(' => ', '=>').encode(Encoding::UTF_8))
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
def test_format_without_newline
|
|
33
33
|
d = create_driver('add_newline' => false)
|
|
34
34
|
formatted = d.instance.format(tag, @time, record)
|
|
35
35
|
|
|
36
|
-
assert_equal(%Q!{"message"=>"awesome", "greeting"=>"hello"}!, formatted.encode(Encoding::UTF_8))
|
|
36
|
+
assert_equal(%Q!{"message"=>"awesome", "greeting"=>"hello"}!, formatted.gsub(' => ', '=>').encode(Encoding::UTF_8))
|
|
37
37
|
end
|
|
38
38
|
end
|
|
@@ -1347,4 +1347,27 @@ EOL
|
|
|
1347
1347
|
end
|
|
1348
1348
|
end
|
|
1349
1349
|
end
|
|
1350
|
+
|
|
1351
|
+
test 'establish_connection_timeout' do
|
|
1352
|
+
@d = d = create_driver(%[
|
|
1353
|
+
hard_timeout 1
|
|
1354
|
+
<server>
|
|
1355
|
+
host #{TARGET_HOST}
|
|
1356
|
+
port #{@target_port}
|
|
1357
|
+
</server>
|
|
1358
|
+
])
|
|
1359
|
+
|
|
1360
|
+
node = d.instance.nodes.first
|
|
1361
|
+
mock_sock = flexmock('socket')
|
|
1362
|
+
mock_sock.should_receive(:read_nonblock).with(512).and_return('').at_least.once
|
|
1363
|
+
|
|
1364
|
+
ri = Fluent::Plugin::ForwardOutput::ConnectionManager::RequestInfo.new(:helo)
|
|
1365
|
+
|
|
1366
|
+
assert_true node.available?
|
|
1367
|
+
node.establish_connection(mock_sock, ri)
|
|
1368
|
+
assert_false node.available?
|
|
1369
|
+
|
|
1370
|
+
logs = d.logs
|
|
1371
|
+
assert{ logs.any?{|log| log.include?('handshake timeout after 1.0s') } }
|
|
1372
|
+
end
|
|
1350
1373
|
end
|
|
@@ -95,11 +95,11 @@ class StdoutOutputTest < Test::Unit::TestCase
|
|
|
95
95
|
d.feed(time, {'test' => 'test2'})
|
|
96
96
|
end
|
|
97
97
|
end
|
|
98
|
-
assert_equal "#{Time.at(time).localtime.strftime(TIME_FORMAT)} test: {\"test\"=>\"test2\"}\n", out
|
|
98
|
+
assert_equal "#{Time.at(time).localtime.strftime(TIME_FORMAT)} test: {\"test\"=>\"test2\"}\n", out.gsub(' => ', '=>')
|
|
99
99
|
|
|
100
100
|
# NOTE: Float::NAN is not jsonable, but hash string can output it.
|
|
101
101
|
out = capture_log { d.feed('test', time, {'test' => Float::NAN}) }
|
|
102
|
-
assert_equal "#{Time.at(time).localtime.strftime(TIME_FORMAT)} test: {\"test\"=>NaN}\n", out
|
|
102
|
+
assert_equal "#{Time.at(time).localtime.strftime(TIME_FORMAT)} test: {\"test\"=>NaN}\n", out.gsub(' => ', '=>')
|
|
103
103
|
end
|
|
104
104
|
end
|
|
105
105
|
|
|
@@ -171,7 +171,7 @@ class StdoutOutputTest < Test::Unit::TestCase
|
|
|
171
171
|
end
|
|
172
172
|
end
|
|
173
173
|
|
|
174
|
-
assert_equal "#{Time.at(time).localtime.strftime(TIME_FORMAT)} test: {\"test\"=>\"test\"}\n", out
|
|
174
|
+
assert_equal "#{Time.at(time).localtime.strftime(TIME_FORMAT)} test: {\"test\"=>\"test\"}\n", out.gsub(' => ', '=>')
|
|
175
175
|
end
|
|
176
176
|
end
|
|
177
177
|
end
|
|
@@ -569,7 +569,7 @@ class ChildProcessTest < Test::Unit::TestCase
|
|
|
569
569
|
unless Fluent.windows?
|
|
570
570
|
test 'can specify subprocess name' do
|
|
571
571
|
io = IO.popen([["cat", "caaaaaaaaaaat"], '-'])
|
|
572
|
-
process_naming_enabled = (
|
|
572
|
+
process_naming_enabled = (IO.popen(["ps", "opid,cmd"]){|_io| _io.readlines }.count{|line| line.include?("caaaaaaaaaaat") } > 0)
|
|
573
573
|
Process.kill(:TERM, io.pid) rescue nil
|
|
574
574
|
io.close rescue nil
|
|
575
575
|
|
|
@@ -586,7 +586,7 @@ class ChildProcessTest < Test::Unit::TestCase
|
|
|
586
586
|
m.lock
|
|
587
587
|
ran = true
|
|
588
588
|
pids << @d.child_process_id
|
|
589
|
-
proc_lines +=
|
|
589
|
+
proc_lines += IO.popen(["ps", "opid,cmd"]){|_io| _io.readlines }
|
|
590
590
|
m.unlock
|
|
591
591
|
readio.read
|
|
592
592
|
end
|
|
@@ -645,8 +645,8 @@ class ChildProcessTest < Test::Unit::TestCase
|
|
|
645
645
|
unless Fluent.windows?
|
|
646
646
|
test 'can change working directory' do
|
|
647
647
|
# check my real /tmp directory (for mac)
|
|
648
|
-
cmd =
|
|
649
|
-
mytmpdir =
|
|
648
|
+
cmd = ['ruby', '-e', 'Dir.chdir("/tmp"); puts Dir.pwd']
|
|
649
|
+
mytmpdir = IO.popen(cmd){|io| io.read.chomp }
|
|
650
650
|
|
|
651
651
|
m = Mutex.new
|
|
652
652
|
str = nil
|
data/test/test_configdsl.rb
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
require_relative 'helper'
|
|
2
2
|
require 'fluent/config/dsl'
|
|
3
3
|
require 'fluent/test'
|
|
4
|
+
require 'tempfile'
|
|
4
5
|
|
|
5
6
|
class ConfigDSLTest < Test::Unit::TestCase
|
|
6
7
|
# TEST_CONFIG1 = %[
|
|
@@ -107,8 +108,12 @@ match('aa')
|
|
|
107
108
|
|
|
108
109
|
def test_with_ruby_keyword
|
|
109
110
|
uname_string = `uname -a`
|
|
111
|
+
tmpfile = Tempfile.create('fluentd-test')
|
|
112
|
+
tmpfile.write(uname_string)
|
|
113
|
+
tmpfile.close
|
|
114
|
+
|
|
110
115
|
root1 = Fluent::Config::DSL::Parser.parse(<<DSL)
|
|
111
|
-
uname_str = ruby.open(
|
|
116
|
+
uname_str = ruby.open("#{tmpfile.path}"){|out| out.read}
|
|
112
117
|
source {
|
|
113
118
|
uname uname_str
|
|
114
119
|
}
|
|
@@ -144,5 +149,7 @@ source {
|
|
|
144
149
|
}
|
|
145
150
|
DSL
|
|
146
151
|
assert_raise (NoMethodError) { Fluent::Config::DSL::Parser.parse(conf3) }
|
|
152
|
+
ensure
|
|
153
|
+
File.delete(tmpfile.path)
|
|
147
154
|
end
|
|
148
155
|
end
|
data/test/test_supervisor.rb
CHANGED
|
@@ -353,6 +353,7 @@ class SupervisorTest < ::Test::Unit::TestCase
|
|
|
353
353
|
event = Win32::Event.open("TestFluentdEvent")
|
|
354
354
|
event.set
|
|
355
355
|
event.close
|
|
356
|
+
sleep 1.0 # Wait for dumping
|
|
356
357
|
ensure
|
|
357
358
|
server.stop_windows_event_thread
|
|
358
359
|
end
|
|
@@ -379,6 +380,7 @@ class SupervisorTest < ::Test::Unit::TestCase
|
|
|
379
380
|
event = Win32::Event.open("TestFluentdEvent_USR1")
|
|
380
381
|
event.set
|
|
381
382
|
event.close
|
|
383
|
+
sleep 1.0 # Wait for dumping
|
|
382
384
|
ensure
|
|
383
385
|
server.stop_windows_event_thread
|
|
384
386
|
end
|
|
@@ -405,7 +407,7 @@ class SupervisorTest < ::Test::Unit::TestCase
|
|
|
405
407
|
# https://github.com/fluent/fluentd/issues/4063
|
|
406
408
|
GC.start
|
|
407
409
|
|
|
408
|
-
ENV['SIGDUMP_PATH'] =
|
|
410
|
+
ENV['SIGDUMP_PATH'] = @tmp_dir + "/sigdump.log"
|
|
409
411
|
|
|
410
412
|
server = DummyServer.new
|
|
411
413
|
def server.config
|
|
@@ -423,7 +425,7 @@ class SupervisorTest < ::Test::Unit::TestCase
|
|
|
423
425
|
server.stop_windows_event_thread
|
|
424
426
|
end
|
|
425
427
|
|
|
426
|
-
result_filepaths = Dir.glob("#{
|
|
428
|
+
result_filepaths = Dir.glob("#{@tmp_dir}/*")
|
|
427
429
|
assert {result_filepaths.length > 0}
|
|
428
430
|
ensure
|
|
429
431
|
ENV.delete('SIGDUMP_PATH')
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: fluentd
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.16.
|
|
4
|
+
version: 1.16.11
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Sadayuki Furuhashi
|
|
@@ -213,6 +213,48 @@ dependencies:
|
|
|
213
213
|
- - "<"
|
|
214
214
|
- !ruby/object:Gem::Version
|
|
215
215
|
version: '1.24'
|
|
216
|
+
- !ruby/object:Gem::Dependency
|
|
217
|
+
name: base64
|
|
218
|
+
requirement: !ruby/object:Gem::Requirement
|
|
219
|
+
requirements:
|
|
220
|
+
- - "~>"
|
|
221
|
+
- !ruby/object:Gem::Version
|
|
222
|
+
version: '0.2'
|
|
223
|
+
type: :runtime
|
|
224
|
+
prerelease: false
|
|
225
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
226
|
+
requirements:
|
|
227
|
+
- - "~>"
|
|
228
|
+
- !ruby/object:Gem::Version
|
|
229
|
+
version: '0.2'
|
|
230
|
+
- !ruby/object:Gem::Dependency
|
|
231
|
+
name: csv
|
|
232
|
+
requirement: !ruby/object:Gem::Requirement
|
|
233
|
+
requirements:
|
|
234
|
+
- - "~>"
|
|
235
|
+
- !ruby/object:Gem::Version
|
|
236
|
+
version: '3.2'
|
|
237
|
+
type: :runtime
|
|
238
|
+
prerelease: false
|
|
239
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
240
|
+
requirements:
|
|
241
|
+
- - "~>"
|
|
242
|
+
- !ruby/object:Gem::Version
|
|
243
|
+
version: '3.2'
|
|
244
|
+
- !ruby/object:Gem::Dependency
|
|
245
|
+
name: drb
|
|
246
|
+
requirement: !ruby/object:Gem::Requirement
|
|
247
|
+
requirements:
|
|
248
|
+
- - "~>"
|
|
249
|
+
- !ruby/object:Gem::Version
|
|
250
|
+
version: '2.2'
|
|
251
|
+
type: :runtime
|
|
252
|
+
prerelease: false
|
|
253
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
254
|
+
requirements:
|
|
255
|
+
- - "~>"
|
|
256
|
+
- !ruby/object:Gem::Version
|
|
257
|
+
version: '2.2'
|
|
216
258
|
- !ruby/object:Gem::Dependency
|
|
217
259
|
name: logger
|
|
218
260
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -983,7 +1025,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
983
1025
|
- !ruby/object:Gem::Version
|
|
984
1026
|
version: '0'
|
|
985
1027
|
requirements: []
|
|
986
|
-
rubygems_version: 3.6.
|
|
1028
|
+
rubygems_version: 3.6.9
|
|
987
1029
|
specification_version: 4
|
|
988
1030
|
summary: Fluentd event collector
|
|
989
1031
|
test_files:
|