From 427ba4a0c9ec8d97a6b80e6a587938437563eb68 Mon Sep 17 00:00:00 2001 From: Shizuo Fujita Date: Thu, 19 Feb 2026 10:43:54 +0900 Subject: [PATCH] gem: add ostruct gem as dependency for Ruby 4.0 This patch will fix following error: ``` $ bundle exec rake test /home/watson/.rbenv/versions/4.0.1/bin/ruby -w -I"lib:lib:test" /home/watson/.rbenv/versions/4.0.1/lib/ruby/gems/4.0.0/gems/rake-13.3.1/lib/rake/rake_test_loader.rb "test/test_in_s3.rb" "test/test_out_s3.rb" /home/watson/.rbenv/versions/4.0.1/lib/ruby/gems/4.0.0/gems/fluentd-1.18.0/lib/fluent/plugin_helper.rb:46: warning: method redefined; discarding old inherited /home/watson/.rbenv/versions/4.0.1/lib/ruby/gems/4.0.0/gems/fluentd-1.18.0/lib/fluent/plugin_helper.rb:46: warning: previous definition of inherited was here /home/watson/src/fluent-plugin-s3/lib/fluent/plugin/in_s3.rb:7: warning: CGI::Util is removed from Ruby 4.0. Please use cgi/escape instead for CGI.escape and CGI.unescape features. If you are using CGI.parse, please install and use the cgi gem instead. /home/watson/src/fluent-plugin-s3/test/test_in_s3.rb:14: warning: ostruct used to be loaded from the standard library, but is not part of the default gems since Ruby 4.0.0. You can add ostruct to your Gemfile or gemspec to fix this error. /home/watson/.rbenv/versions/4.0.1/lib/ruby/4.0.0/bundled_gems.rb:60:in 'Kernel.require': cannot load such file -- ostruct (LoadError) Did you mean? tsort from /home/watson/.rbenv/versions/4.0.1/lib/ruby/4.0.0/bundled_gems.rb:60:in 'block (2 levels) in Kernel#replace_require' from /home/watson/src/fluent-plugin-s3/test/test_in_s3.rb:14:in '' from /home/watson/.rbenv/versions/4.0.1/lib/ruby/4.0.0/bundled_gems.rb:60:in 'Kernel.require' from /home/watson/.rbenv/versions/4.0.1/lib/ruby/4.0.0/bundled_gems.rb:60:in 'block (2 levels) in Kernel#replace_require' from /home/watson/.rbenv/versions/4.0.1/lib/ruby/gems/4.0.0/gems/rake-13.3.1/lib/rake/rake_test_loader.rb:21:in 'block in
' from /home/watson/.rbenv/versions/4.0.1/lib/ruby/gems/4.0.0/gems/rake-13.3.1/lib/rake/rake_test_loader.rb:6:in 'Array#select' from /home/watson/.rbenv/versions/4.0.1/lib/ruby/gems/4.0.0/gems/rake-13.3.1/lib/rake/rake_test_loader.rb:6:in '
' rake aborted! Command failed with status (1): [ruby -w -I"lib:lib:test" /home/watson/.rbenv/versions/4.0.1/lib/ruby/gems/4.0.0/gems/rake-13.3.1/lib/rake/rake_test_loader.rb "test/test_in_s3.rb" "test/test_out_s3.rb" ] /home/watson/.rbenv/versions/4.0.1/bin/bundle:25:in '
' Tasks: TOP => test (See full trace by running task with --trace) ``` We need to specify the ostruct gem as dependency because it is a bundled gem from Ruby 4.0. Same reason with https://github.com/fluent/fluentd/pull/5249 Ref: https://github.com/fluent/fluent-plugin-s3/blob/9e5e9e81f9449af466330a298ada50eadc631312/test/test_in_s3.rb#L14 https://github.com/fluent/fluent-plugin-s3/blob/9e5e9e81f9449af466330a298ada50eadc631312/test/test_out_s3.rb#L12 Signed-off-by: Shizuo Fujita --- fluent-plugin-s3.gemspec | 1 + 1 file changed, 1 insertion(+) diff --git a/fluent-plugin-s3.gemspec b/fluent-plugin-s3.gemspec index 7ee937c..f1310c8 100644 --- a/fluent-plugin-s3.gemspec +++ b/fluent-plugin-s3.gemspec @@ -23,6 +23,7 @@ Gem::Specification.new do |gem| gem.add_development_dependency "test-unit", ">= 3.0.8" gem.add_development_dependency "test-unit-rr", ">= 1.0.3" gem.add_development_dependency "timecop" + gem.add_development_dependency "ostruct" # aws-sdk-core requires one of ox, oga, libxml, nokogiri or rexml, # and rexml is no longer default gem as of Ruby 3.0. gem.add_development_dependency "rexml"