diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 99797623fb..ca95277508 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -131,3 +131,4 @@ Style/ClassVars: - 'spec/datadog/tracing/contrib/rails/support/rails4.rb' - 'spec/datadog/tracing/contrib/rails/support/rails5.rb' - 'spec/datadog/tracing/contrib/rails/support/rails6.rb' + - 'spec/datadog/tracing/contrib/rails/support/rails7.rb' diff --git a/Matrixfile b/Matrixfile index b76c14e12b..822be58399 100644 --- a/Matrixfile +++ b/Matrixfile @@ -27,7 +27,10 @@ 'opentelemetry' => '❌ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ❌ jruby' }, 'action_pack' => { - 'activesupport' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', + 'rails5-mysql2' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ❌ 3.0 / ❌ 3.1 / ❌ 3.2 / ❌ 3.3 / ❌ 3.4 / ✅ jruby', + 'rails6-mysql2' => '❌ 2.5 / ❌ 2.6 / ❌ 2.7 / ❌ 3.0 / ❌ 3.1 / ❌ 3.2 / ❌ 3.3 / ❌ 3.4 / ✅ jruby', + 'rails7' => '❌ 2.5 / ❌ 2.6 / ❌ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ❌ jruby', + 'rails71' => '❌ 2.5 / ❌ 2.6 / ❌ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ❌ jruby', }, 'action_view' => { 'activesupport' => '✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ 3.4 / ✅ jruby', diff --git a/appraisal/ruby-2.6.rb b/appraisal/ruby-2.6.rb index 312a76cdba..1b3ca75132 100644 --- a/appraisal/ruby-2.6.rb +++ b/appraisal/ruby-2.6.rb @@ -189,6 +189,10 @@ gem 'ruby-kafka', '>= 0.7.10' end +appraise 'actionpack-5.0' do + gem 'rails', '~> 5.0' +end + appraise 'contrib' do gem 'concurrent-ruby' gem 'dalli', '>= 3.0.0' diff --git a/appraisal/ruby-3.0.rb b/appraisal/ruby-3.0.rb index 7dcd32e7a3..99397fb2a7 100644 --- a/appraisal/ruby-3.0.rb +++ b/appraisal/ruby-3.0.rb @@ -50,6 +50,14 @@ gem 'net-smtp' end +appraise 'rails7' do + gem 'rails', '~> 7.0.0' +end + +appraise 'rails71' do + gem 'rails', '~> 7.1.0' +end + appraise 'resque2-redis3' do gem 'redis', '< 4.0' gem 'resque', '>= 2.0' diff --git a/appraisal/ruby-3.1.rb b/appraisal/ruby-3.1.rb index 7dcd32e7a3..99397fb2a7 100644 --- a/appraisal/ruby-3.1.rb +++ b/appraisal/ruby-3.1.rb @@ -50,6 +50,14 @@ gem 'net-smtp' end +appraise 'rails7' do + gem 'rails', '~> 7.0.0' +end + +appraise 'rails71' do + gem 'rails', '~> 7.1.0' +end + appraise 'resque2-redis3' do gem 'redis', '< 4.0' gem 'resque', '>= 2.0' diff --git a/appraisal/ruby-3.2.rb b/appraisal/ruby-3.2.rb index 7dcd32e7a3..99397fb2a7 100644 --- a/appraisal/ruby-3.2.rb +++ b/appraisal/ruby-3.2.rb @@ -50,6 +50,14 @@ gem 'net-smtp' end +appraise 'rails7' do + gem 'rails', '~> 7.0.0' +end + +appraise 'rails71' do + gem 'rails', '~> 7.1.0' +end + appraise 'resque2-redis3' do gem 'redis', '< 4.0' gem 'resque', '>= 2.0' diff --git a/appraisal/ruby-3.3.rb b/appraisal/ruby-3.3.rb index 6bdd395830..61b24dbd5b 100644 --- a/appraisal/ruby-3.3.rb +++ b/appraisal/ruby-3.3.rb @@ -50,6 +50,14 @@ gem 'net-smtp' end +appraise 'rails7' do + gem 'rails', '~> 7.0.0' +end + +appraise 'rails71' do + gem 'rails', '~> 7.1.0' +end + appraise 'resque2-redis3' do gem 'redis', '< 4.0' gem 'resque', '>= 2.0' diff --git a/appraisal/ruby-3.4.rb b/appraisal/ruby-3.4.rb index e38331b9db..be126d0cc1 100644 --- a/appraisal/ruby-3.4.rb +++ b/appraisal/ruby-3.4.rb @@ -50,6 +50,14 @@ gem 'net-smtp' end +appraise 'rails7' do + gem 'rails', '~> 7.0.0' +end + +appraise 'rails71' do + gem 'rails', '~> 7.1.0' +end + appraise 'resque2-redis3' do gem 'redis', '< 4.0' gem 'resque', '>= 2.0' diff --git a/gemfiles/ruby_3.0_rails7.gemfile b/gemfiles/ruby_3.0_rails7.gemfile new file mode 100644 index 0000000000..ecc0e84be0 --- /dev/null +++ b/gemfiles/ruby_3.0_rails7.gemfile @@ -0,0 +1,49 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "builder" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "yard", "~> 0.9" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 7.0.0" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.0_rails7.gemfile.lock b/gemfiles/ruby_3.0_rails7.gemfile.lock new file mode 100644 index 0000000000..55dc302e9a --- /dev/null +++ b/gemfiles/ruby_3.0_rails7.gemfile.lock @@ -0,0 +1,326 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.3.0) + debase-ruby_core_source (= 3.3.1) + libdatadog (~> 12.0.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (7.0.8.4) + actionpack (= 7.0.8.4) + activesupport (= 7.0.8.4) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (7.0.8.4) + actionpack (= 7.0.8.4) + activejob (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + mail (>= 2.7.1) + net-imap + net-pop + net-smtp + actionmailer (7.0.8.4) + actionpack (= 7.0.8.4) + actionview (= 7.0.8.4) + activejob (= 7.0.8.4) + activesupport (= 7.0.8.4) + mail (~> 2.5, >= 2.5.4) + net-imap + net-pop + net-smtp + rails-dom-testing (~> 2.0) + actionpack (7.0.8.4) + actionview (= 7.0.8.4) + activesupport (= 7.0.8.4) + rack (~> 2.0, >= 2.2.4) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (7.0.8.4) + actionpack (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + globalid (>= 0.6.0) + nokogiri (>= 1.8.5) + actionview (7.0.8.4) + activesupport (= 7.0.8.4) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (7.0.8.4) + activesupport (= 7.0.8.4) + globalid (>= 0.3.6) + activemodel (7.0.8.4) + activesupport (= 7.0.8.4) + activerecord (7.0.8.4) + activemodel (= 7.0.8.4) + activesupport (= 7.0.8.4) + activestorage (7.0.8.4) + actionpack (= 7.0.8.4) + activejob (= 7.0.8.4) + activerecord (= 7.0.8.4) + activesupport (= 7.0.8.4) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (7.0.8.4) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + builder (3.3.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + crass (1.0.6) + date (3.3.4) + debase-ruby_core_source (3.3.1) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + erubi (1.13.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (12.0.0.1.0-aarch64-linux) + libdatadog (12.0.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_mime (1.1.5) + minitest (5.25.1) + msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.7-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.7-x86_64-linux) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (7.0.8.4) + actioncable (= 7.0.8.4) + actionmailbox (= 7.0.8.4) + actionmailer (= 7.0.8.4) + actionpack (= 7.0.8.4) + actiontext (= 7.0.8.4) + actionview (= 7.0.8.4) + activejob (= 7.0.8.4) + activemodel (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + bundler (>= 1.15.0) + railties (= 7.0.8.4) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (7.0.8.4) + actionpack (= 7.0.8.4) + activesupport (= 7.0.8.4) + method_source + rake (>= 12.2) + thor (~> 1.0) + zeitwerk (~> 2.5) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + strscan (3.1.0) + thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + yard (0.9.36) + zeitwerk (2.6.17) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + builder + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rails (~> 7.0.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + yard (~> 0.9) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.0_rails71.gemfile b/gemfiles/ruby_3.0_rails71.gemfile new file mode 100644 index 0000000000..029e84b7b4 --- /dev/null +++ b/gemfiles/ruby_3.0_rails71.gemfile @@ -0,0 +1,49 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "builder" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "yard", "~> 0.9" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 7.1.0" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.0_rails71.gemfile.lock b/gemfiles/ruby_3.0_rails71.gemfile.lock new file mode 100644 index 0000000000..d81449167f --- /dev/null +++ b/gemfiles/ruby_3.0_rails71.gemfile.lock @@ -0,0 +1,356 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.3.0) + debase-ruby_core_source (= 3.3.1) + libdatadog (~> 12.0.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (7.1.3.4) + actionpack (= 7.1.3.4) + activesupport (= 7.1.3.4) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + zeitwerk (~> 2.6) + actionmailbox (7.1.3.4) + actionpack (= 7.1.3.4) + activejob (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + mail (>= 2.7.1) + net-imap + net-pop + net-smtp + actionmailer (7.1.3.4) + actionpack (= 7.1.3.4) + actionview (= 7.1.3.4) + activejob (= 7.1.3.4) + activesupport (= 7.1.3.4) + mail (~> 2.5, >= 2.5.4) + net-imap + net-pop + net-smtp + rails-dom-testing (~> 2.2) + actionpack (7.1.3.4) + actionview (= 7.1.3.4) + activesupport (= 7.1.3.4) + nokogiri (>= 1.8.5) + racc + rack (>= 2.2.4) + rack-session (>= 1.0.1) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + actiontext (7.1.3.4) + actionpack (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + globalid (>= 0.6.0) + nokogiri (>= 1.8.5) + actionview (7.1.3.4) + activesupport (= 7.1.3.4) + builder (~> 3.1) + erubi (~> 1.11) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + activejob (7.1.3.4) + activesupport (= 7.1.3.4) + globalid (>= 0.3.6) + activemodel (7.1.3.4) + activesupport (= 7.1.3.4) + activerecord (7.1.3.4) + activemodel (= 7.1.3.4) + activesupport (= 7.1.3.4) + timeout (>= 0.4.0) + activestorage (7.1.3.4) + actionpack (= 7.1.3.4) + activejob (= 7.1.3.4) + activerecord (= 7.1.3.4) + activesupport (= 7.1.3.4) + marcel (~> 1.0) + activesupport (7.1.3.4) + base64 + bigdecimal + concurrent-ruby (~> 1.0, >= 1.0.2) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + minitest (>= 5.1) + mutex_m + tzinfo (~> 2.0) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + builder (3.3.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + connection_pool (2.4.1) + crack (1.0.0) + bigdecimal + rexml + crass (1.0.6) + date (3.3.4) + debase-ruby_core_source (3.3.1) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + drb (2.2.1) + erubi (1.13.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + io-console (0.7.2) + irb (1.14.0) + rdoc (>= 4.0.0) + reline (>= 0.4.2) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (12.0.0.1.0-aarch64-linux) + libdatadog (12.0.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_mime (1.1.5) + minitest (5.25.1) + msgpack (1.7.2) + mutex_m (0.2.0) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.7-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.7-x86_64-linux) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + psych (5.1.2) + stringio + public_suffix (6.0.1) + racc (1.8.1) + rack (3.1.7) + rack-session (2.0.0) + rack (>= 3.0.0) + rack-test (2.1.0) + rack (>= 1.3) + rackup (2.1.0) + rack (>= 3) + webrick (~> 1.8) + rails (7.1.3.4) + actioncable (= 7.1.3.4) + actionmailbox (= 7.1.3.4) + actionmailer (= 7.1.3.4) + actionpack (= 7.1.3.4) + actiontext (= 7.1.3.4) + actionview (= 7.1.3.4) + activejob (= 7.1.3.4) + activemodel (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + bundler (>= 1.15.0) + railties (= 7.1.3.4) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (7.1.3.4) + actionpack (= 7.1.3.4) + activesupport (= 7.1.3.4) + irb + rackup (>= 1.0.0) + rake (>= 12.2) + thor (~> 1.0, >= 1.2.2) + zeitwerk (~> 2.6) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rdoc (6.7.0) + psych (>= 4.0.0) + regexp_parser (2.9.2) + reline (0.5.9) + io-console (~> 0.5) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stringio (3.1.1) + strscan (3.1.0) + thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + yard (0.9.36) + zeitwerk (2.6.17) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + builder + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rails (~> 7.1.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + yard (~> 0.9) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.1_rails7.gemfile b/gemfiles/ruby_3.1_rails7.gemfile new file mode 100644 index 0000000000..ecc0e84be0 --- /dev/null +++ b/gemfiles/ruby_3.1_rails7.gemfile @@ -0,0 +1,49 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "builder" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "yard", "~> 0.9" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 7.0.0" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.1_rails7.gemfile.lock b/gemfiles/ruby_3.1_rails7.gemfile.lock new file mode 100644 index 0000000000..55dc302e9a --- /dev/null +++ b/gemfiles/ruby_3.1_rails7.gemfile.lock @@ -0,0 +1,326 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.3.0) + debase-ruby_core_source (= 3.3.1) + libdatadog (~> 12.0.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (7.0.8.4) + actionpack (= 7.0.8.4) + activesupport (= 7.0.8.4) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (7.0.8.4) + actionpack (= 7.0.8.4) + activejob (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + mail (>= 2.7.1) + net-imap + net-pop + net-smtp + actionmailer (7.0.8.4) + actionpack (= 7.0.8.4) + actionview (= 7.0.8.4) + activejob (= 7.0.8.4) + activesupport (= 7.0.8.4) + mail (~> 2.5, >= 2.5.4) + net-imap + net-pop + net-smtp + rails-dom-testing (~> 2.0) + actionpack (7.0.8.4) + actionview (= 7.0.8.4) + activesupport (= 7.0.8.4) + rack (~> 2.0, >= 2.2.4) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (7.0.8.4) + actionpack (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + globalid (>= 0.6.0) + nokogiri (>= 1.8.5) + actionview (7.0.8.4) + activesupport (= 7.0.8.4) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (7.0.8.4) + activesupport (= 7.0.8.4) + globalid (>= 0.3.6) + activemodel (7.0.8.4) + activesupport (= 7.0.8.4) + activerecord (7.0.8.4) + activemodel (= 7.0.8.4) + activesupport (= 7.0.8.4) + activestorage (7.0.8.4) + actionpack (= 7.0.8.4) + activejob (= 7.0.8.4) + activerecord (= 7.0.8.4) + activesupport (= 7.0.8.4) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (7.0.8.4) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + builder (3.3.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + crass (1.0.6) + date (3.3.4) + debase-ruby_core_source (3.3.1) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + erubi (1.13.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (12.0.0.1.0-aarch64-linux) + libdatadog (12.0.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_mime (1.1.5) + minitest (5.25.1) + msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.7-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.7-x86_64-linux) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (7.0.8.4) + actioncable (= 7.0.8.4) + actionmailbox (= 7.0.8.4) + actionmailer (= 7.0.8.4) + actionpack (= 7.0.8.4) + actiontext (= 7.0.8.4) + actionview (= 7.0.8.4) + activejob (= 7.0.8.4) + activemodel (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + bundler (>= 1.15.0) + railties (= 7.0.8.4) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (7.0.8.4) + actionpack (= 7.0.8.4) + activesupport (= 7.0.8.4) + method_source + rake (>= 12.2) + thor (~> 1.0) + zeitwerk (~> 2.5) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + strscan (3.1.0) + thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + yard (0.9.36) + zeitwerk (2.6.17) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + builder + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rails (~> 7.0.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + yard (~> 0.9) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.1_rails71.gemfile b/gemfiles/ruby_3.1_rails71.gemfile new file mode 100644 index 0000000000..029e84b7b4 --- /dev/null +++ b/gemfiles/ruby_3.1_rails71.gemfile @@ -0,0 +1,49 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "builder" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "yard", "~> 0.9" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 7.1.0" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.1_rails71.gemfile.lock b/gemfiles/ruby_3.1_rails71.gemfile.lock new file mode 100644 index 0000000000..d81449167f --- /dev/null +++ b/gemfiles/ruby_3.1_rails71.gemfile.lock @@ -0,0 +1,356 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.3.0) + debase-ruby_core_source (= 3.3.1) + libdatadog (~> 12.0.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (7.1.3.4) + actionpack (= 7.1.3.4) + activesupport (= 7.1.3.4) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + zeitwerk (~> 2.6) + actionmailbox (7.1.3.4) + actionpack (= 7.1.3.4) + activejob (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + mail (>= 2.7.1) + net-imap + net-pop + net-smtp + actionmailer (7.1.3.4) + actionpack (= 7.1.3.4) + actionview (= 7.1.3.4) + activejob (= 7.1.3.4) + activesupport (= 7.1.3.4) + mail (~> 2.5, >= 2.5.4) + net-imap + net-pop + net-smtp + rails-dom-testing (~> 2.2) + actionpack (7.1.3.4) + actionview (= 7.1.3.4) + activesupport (= 7.1.3.4) + nokogiri (>= 1.8.5) + racc + rack (>= 2.2.4) + rack-session (>= 1.0.1) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + actiontext (7.1.3.4) + actionpack (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + globalid (>= 0.6.0) + nokogiri (>= 1.8.5) + actionview (7.1.3.4) + activesupport (= 7.1.3.4) + builder (~> 3.1) + erubi (~> 1.11) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + activejob (7.1.3.4) + activesupport (= 7.1.3.4) + globalid (>= 0.3.6) + activemodel (7.1.3.4) + activesupport (= 7.1.3.4) + activerecord (7.1.3.4) + activemodel (= 7.1.3.4) + activesupport (= 7.1.3.4) + timeout (>= 0.4.0) + activestorage (7.1.3.4) + actionpack (= 7.1.3.4) + activejob (= 7.1.3.4) + activerecord (= 7.1.3.4) + activesupport (= 7.1.3.4) + marcel (~> 1.0) + activesupport (7.1.3.4) + base64 + bigdecimal + concurrent-ruby (~> 1.0, >= 1.0.2) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + minitest (>= 5.1) + mutex_m + tzinfo (~> 2.0) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + builder (3.3.0) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + connection_pool (2.4.1) + crack (1.0.0) + bigdecimal + rexml + crass (1.0.6) + date (3.3.4) + debase-ruby_core_source (3.3.1) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + drb (2.2.1) + erubi (1.13.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + io-console (0.7.2) + irb (1.14.0) + rdoc (>= 4.0.0) + reline (>= 0.4.2) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (12.0.0.1.0-aarch64-linux) + libdatadog (12.0.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_mime (1.1.5) + minitest (5.25.1) + msgpack (1.7.2) + mutex_m (0.2.0) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.7-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.7-x86_64-linux) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + psych (5.1.2) + stringio + public_suffix (6.0.1) + racc (1.8.1) + rack (3.1.7) + rack-session (2.0.0) + rack (>= 3.0.0) + rack-test (2.1.0) + rack (>= 1.3) + rackup (2.1.0) + rack (>= 3) + webrick (~> 1.8) + rails (7.1.3.4) + actioncable (= 7.1.3.4) + actionmailbox (= 7.1.3.4) + actionmailer (= 7.1.3.4) + actionpack (= 7.1.3.4) + actiontext (= 7.1.3.4) + actionview (= 7.1.3.4) + activejob (= 7.1.3.4) + activemodel (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + bundler (>= 1.15.0) + railties (= 7.1.3.4) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (7.1.3.4) + actionpack (= 7.1.3.4) + activesupport (= 7.1.3.4) + irb + rackup (>= 1.0.0) + rake (>= 12.2) + thor (~> 1.0, >= 1.2.2) + zeitwerk (~> 2.6) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rdoc (6.7.0) + psych (>= 4.0.0) + regexp_parser (2.9.2) + reline (0.5.9) + io-console (~> 0.5) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stringio (3.1.1) + strscan (3.1.0) + thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + yard (0.9.36) + zeitwerk (2.6.17) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + builder + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rails (~> 7.1.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + yard (~> 0.9) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.2_rails7.gemfile b/gemfiles/ruby_3.2_rails7.gemfile new file mode 100644 index 0000000000..2c90032f07 --- /dev/null +++ b/gemfiles/ruby_3.2_rails7.gemfile @@ -0,0 +1,48 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "builder" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "yard", "~> 0.9" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 7.0.0" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.2_rails7.gemfile.lock b/gemfiles/ruby_3.2_rails7.gemfile.lock new file mode 100644 index 0000000000..a02275f4b5 --- /dev/null +++ b/gemfiles/ruby_3.2_rails7.gemfile.lock @@ -0,0 +1,321 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.3.0) + debase-ruby_core_source (= 3.3.1) + libdatadog (~> 12.0.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (7.0.8.4) + actionpack (= 7.0.8.4) + activesupport (= 7.0.8.4) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (7.0.8.4) + actionpack (= 7.0.8.4) + activejob (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + mail (>= 2.7.1) + net-imap + net-pop + net-smtp + actionmailer (7.0.8.4) + actionpack (= 7.0.8.4) + actionview (= 7.0.8.4) + activejob (= 7.0.8.4) + activesupport (= 7.0.8.4) + mail (~> 2.5, >= 2.5.4) + net-imap + net-pop + net-smtp + rails-dom-testing (~> 2.0) + actionpack (7.0.8.4) + actionview (= 7.0.8.4) + activesupport (= 7.0.8.4) + rack (~> 2.0, >= 2.2.4) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (7.0.8.4) + actionpack (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + globalid (>= 0.6.0) + nokogiri (>= 1.8.5) + actionview (7.0.8.4) + activesupport (= 7.0.8.4) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (7.0.8.4) + activesupport (= 7.0.8.4) + globalid (>= 0.3.6) + activemodel (7.0.8.4) + activesupport (= 7.0.8.4) + activerecord (7.0.8.4) + activemodel (= 7.0.8.4) + activesupport (= 7.0.8.4) + activestorage (7.0.8.4) + actionpack (= 7.0.8.4) + activejob (= 7.0.8.4) + activerecord (= 7.0.8.4) + activesupport (= 7.0.8.4) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (7.0.8.4) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + builder (3.3.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + crass (1.0.6) + date (3.3.4) + debase-ruby_core_source (3.3.1) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + erubi (1.13.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (12.0.0.1.0-aarch64-linux) + libdatadog (12.0.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_mime (1.1.5) + minitest (5.25.1) + msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.7-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.7-x86_64-linux) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (7.0.8.4) + actioncable (= 7.0.8.4) + actionmailbox (= 7.0.8.4) + actionmailer (= 7.0.8.4) + actionpack (= 7.0.8.4) + actiontext (= 7.0.8.4) + actionview (= 7.0.8.4) + activejob (= 7.0.8.4) + activemodel (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + bundler (>= 1.15.0) + railties (= 7.0.8.4) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (7.0.8.4) + actionpack (= 7.0.8.4) + activesupport (= 7.0.8.4) + method_source + rake (>= 12.2) + thor (~> 1.0) + zeitwerk (~> 2.5) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + strscan (3.1.0) + thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + yard (0.9.36) + zeitwerk (2.6.17) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + builder + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rails (~> 7.0.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + yard (~> 0.9) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.2_rails71.gemfile b/gemfiles/ruby_3.2_rails71.gemfile new file mode 100644 index 0000000000..77d66c84b1 --- /dev/null +++ b/gemfiles/ruby_3.2_rails71.gemfile @@ -0,0 +1,48 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "builder" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "yard", "~> 0.9" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 7.1.0" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.2_rails71.gemfile.lock b/gemfiles/ruby_3.2_rails71.gemfile.lock new file mode 100644 index 0000000000..db7b3876e2 --- /dev/null +++ b/gemfiles/ruby_3.2_rails71.gemfile.lock @@ -0,0 +1,351 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.3.0) + debase-ruby_core_source (= 3.3.1) + libdatadog (~> 12.0.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (7.1.3.4) + actionpack (= 7.1.3.4) + activesupport (= 7.1.3.4) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + zeitwerk (~> 2.6) + actionmailbox (7.1.3.4) + actionpack (= 7.1.3.4) + activejob (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + mail (>= 2.7.1) + net-imap + net-pop + net-smtp + actionmailer (7.1.3.4) + actionpack (= 7.1.3.4) + actionview (= 7.1.3.4) + activejob (= 7.1.3.4) + activesupport (= 7.1.3.4) + mail (~> 2.5, >= 2.5.4) + net-imap + net-pop + net-smtp + rails-dom-testing (~> 2.2) + actionpack (7.1.3.4) + actionview (= 7.1.3.4) + activesupport (= 7.1.3.4) + nokogiri (>= 1.8.5) + racc + rack (>= 2.2.4) + rack-session (>= 1.0.1) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + actiontext (7.1.3.4) + actionpack (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + globalid (>= 0.6.0) + nokogiri (>= 1.8.5) + actionview (7.1.3.4) + activesupport (= 7.1.3.4) + builder (~> 3.1) + erubi (~> 1.11) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + activejob (7.1.3.4) + activesupport (= 7.1.3.4) + globalid (>= 0.3.6) + activemodel (7.1.3.4) + activesupport (= 7.1.3.4) + activerecord (7.1.3.4) + activemodel (= 7.1.3.4) + activesupport (= 7.1.3.4) + timeout (>= 0.4.0) + activestorage (7.1.3.4) + actionpack (= 7.1.3.4) + activejob (= 7.1.3.4) + activerecord (= 7.1.3.4) + activesupport (= 7.1.3.4) + marcel (~> 1.0) + activesupport (7.1.3.4) + base64 + bigdecimal + concurrent-ruby (~> 1.0, >= 1.0.2) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + minitest (>= 5.1) + mutex_m + tzinfo (~> 2.0) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + builder (3.3.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + connection_pool (2.4.1) + crack (1.0.0) + bigdecimal + rexml + crass (1.0.6) + date (3.3.4) + debase-ruby_core_source (3.3.1) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + drb (2.2.1) + erubi (1.13.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + io-console (0.7.2) + irb (1.14.0) + rdoc (>= 4.0.0) + reline (>= 0.4.2) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (12.0.0.1.0-aarch64-linux) + libdatadog (12.0.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_mime (1.1.5) + minitest (5.25.1) + msgpack (1.7.2) + mutex_m (0.2.0) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.7-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.7-x86_64-linux) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + psych (5.1.2) + stringio + public_suffix (6.0.1) + racc (1.8.1) + rack (3.1.7) + rack-session (2.0.0) + rack (>= 3.0.0) + rack-test (2.1.0) + rack (>= 1.3) + rackup (2.1.0) + rack (>= 3) + webrick (~> 1.8) + rails (7.1.3.4) + actioncable (= 7.1.3.4) + actionmailbox (= 7.1.3.4) + actionmailer (= 7.1.3.4) + actionpack (= 7.1.3.4) + actiontext (= 7.1.3.4) + actionview (= 7.1.3.4) + activejob (= 7.1.3.4) + activemodel (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + bundler (>= 1.15.0) + railties (= 7.1.3.4) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (7.1.3.4) + actionpack (= 7.1.3.4) + activesupport (= 7.1.3.4) + irb + rackup (>= 1.0.0) + rake (>= 12.2) + thor (~> 1.0, >= 1.2.2) + zeitwerk (~> 2.6) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rdoc (6.7.0) + psych (>= 4.0.0) + regexp_parser (2.9.2) + reline (0.5.9) + io-console (~> 0.5) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stringio (3.1.1) + strscan (3.1.0) + thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + yard (0.9.36) + zeitwerk (2.6.17) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + builder + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rails (~> 7.1.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + yard (~> 0.9) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.3_rails7.gemfile b/gemfiles/ruby_3.3_rails7.gemfile new file mode 100644 index 0000000000..2c90032f07 --- /dev/null +++ b/gemfiles/ruby_3.3_rails7.gemfile @@ -0,0 +1,48 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "builder" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "yard", "~> 0.9" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 7.0.0" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.3_rails7.gemfile.lock b/gemfiles/ruby_3.3_rails7.gemfile.lock new file mode 100644 index 0000000000..a02275f4b5 --- /dev/null +++ b/gemfiles/ruby_3.3_rails7.gemfile.lock @@ -0,0 +1,321 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.3.0) + debase-ruby_core_source (= 3.3.1) + libdatadog (~> 12.0.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (7.0.8.4) + actionpack (= 7.0.8.4) + activesupport (= 7.0.8.4) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (7.0.8.4) + actionpack (= 7.0.8.4) + activejob (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + mail (>= 2.7.1) + net-imap + net-pop + net-smtp + actionmailer (7.0.8.4) + actionpack (= 7.0.8.4) + actionview (= 7.0.8.4) + activejob (= 7.0.8.4) + activesupport (= 7.0.8.4) + mail (~> 2.5, >= 2.5.4) + net-imap + net-pop + net-smtp + rails-dom-testing (~> 2.0) + actionpack (7.0.8.4) + actionview (= 7.0.8.4) + activesupport (= 7.0.8.4) + rack (~> 2.0, >= 2.2.4) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (7.0.8.4) + actionpack (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + globalid (>= 0.6.0) + nokogiri (>= 1.8.5) + actionview (7.0.8.4) + activesupport (= 7.0.8.4) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (7.0.8.4) + activesupport (= 7.0.8.4) + globalid (>= 0.3.6) + activemodel (7.0.8.4) + activesupport (= 7.0.8.4) + activerecord (7.0.8.4) + activemodel (= 7.0.8.4) + activesupport (= 7.0.8.4) + activestorage (7.0.8.4) + actionpack (= 7.0.8.4) + activejob (= 7.0.8.4) + activerecord (= 7.0.8.4) + activesupport (= 7.0.8.4) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (7.0.8.4) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + builder (3.3.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + crass (1.0.6) + date (3.3.4) + debase-ruby_core_source (3.3.1) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + erubi (1.13.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (12.0.0.1.0-aarch64-linux) + libdatadog (12.0.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_mime (1.1.5) + minitest (5.25.1) + msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.7-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.7-x86_64-linux) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (7.0.8.4) + actioncable (= 7.0.8.4) + actionmailbox (= 7.0.8.4) + actionmailer (= 7.0.8.4) + actionpack (= 7.0.8.4) + actiontext (= 7.0.8.4) + actionview (= 7.0.8.4) + activejob (= 7.0.8.4) + activemodel (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + bundler (>= 1.15.0) + railties (= 7.0.8.4) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (7.0.8.4) + actionpack (= 7.0.8.4) + activesupport (= 7.0.8.4) + method_source + rake (>= 12.2) + thor (~> 1.0) + zeitwerk (~> 2.5) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + strscan (3.1.0) + thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + yard (0.9.36) + zeitwerk (2.6.17) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + builder + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rails (~> 7.0.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + yard (~> 0.9) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.3_rails71.gemfile b/gemfiles/ruby_3.3_rails71.gemfile new file mode 100644 index 0000000000..77d66c84b1 --- /dev/null +++ b/gemfiles/ruby_3.3_rails71.gemfile @@ -0,0 +1,48 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "builder" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", ">= 1.7.0" +gem "yard", "~> 0.9" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 7.1.0" + +group :check do + +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.3_rails71.gemfile.lock b/gemfiles/ruby_3.3_rails71.gemfile.lock new file mode 100644 index 0000000000..db7b3876e2 --- /dev/null +++ b/gemfiles/ruby_3.3_rails71.gemfile.lock @@ -0,0 +1,351 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + datadog (2.3.0) + debase-ruby_core_source (= 3.3.1) + libdatadog (~> 12.0.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (7.1.3.4) + actionpack (= 7.1.3.4) + activesupport (= 7.1.3.4) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + zeitwerk (~> 2.6) + actionmailbox (7.1.3.4) + actionpack (= 7.1.3.4) + activejob (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + mail (>= 2.7.1) + net-imap + net-pop + net-smtp + actionmailer (7.1.3.4) + actionpack (= 7.1.3.4) + actionview (= 7.1.3.4) + activejob (= 7.1.3.4) + activesupport (= 7.1.3.4) + mail (~> 2.5, >= 2.5.4) + net-imap + net-pop + net-smtp + rails-dom-testing (~> 2.2) + actionpack (7.1.3.4) + actionview (= 7.1.3.4) + activesupport (= 7.1.3.4) + nokogiri (>= 1.8.5) + racc + rack (>= 2.2.4) + rack-session (>= 1.0.1) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + actiontext (7.1.3.4) + actionpack (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + globalid (>= 0.6.0) + nokogiri (>= 1.8.5) + actionview (7.1.3.4) + activesupport (= 7.1.3.4) + builder (~> 3.1) + erubi (~> 1.11) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + activejob (7.1.3.4) + activesupport (= 7.1.3.4) + globalid (>= 0.3.6) + activemodel (7.1.3.4) + activesupport (= 7.1.3.4) + activerecord (7.1.3.4) + activemodel (= 7.1.3.4) + activesupport (= 7.1.3.4) + timeout (>= 0.4.0) + activestorage (7.1.3.4) + actionpack (= 7.1.3.4) + activejob (= 7.1.3.4) + activerecord (= 7.1.3.4) + activesupport (= 7.1.3.4) + marcel (~> 1.0) + activesupport (7.1.3.4) + base64 + bigdecimal + concurrent-ruby (~> 1.0, >= 1.0.2) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + minitest (>= 5.1) + mutex_m + tzinfo (~> 2.0) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + builder (3.3.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + connection_pool (2.4.1) + crack (1.0.0) + bigdecimal + rexml + crass (1.0.6) + date (3.3.4) + debase-ruby_core_source (3.3.1) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + drb (2.2.1) + erubi (1.13.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.4-aarch64-linux) + google-protobuf (3.25.4-x86_64-linux) + hashdiff (1.1.1) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + io-console (0.7.2) + irb (1.14.0) + rdoc (>= 4.0.0) + reline (>= 0.4.2) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (12.0.0.1.0-aarch64-linux) + libdatadog (12.0.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_mime (1.1.5) + minitest (5.25.1) + msgpack (1.7.2) + mutex_m (0.2.0) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.7-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.7-x86_64-linux) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + psych (5.1.2) + stringio + public_suffix (6.0.1) + racc (1.8.1) + rack (3.1.7) + rack-session (2.0.0) + rack (>= 3.0.0) + rack-test (2.1.0) + rack (>= 1.3) + rackup (2.1.0) + rack (>= 3) + webrick (~> 1.8) + rails (7.1.3.4) + actioncable (= 7.1.3.4) + actionmailbox (= 7.1.3.4) + actionmailer (= 7.1.3.4) + actionpack (= 7.1.3.4) + actiontext (= 7.1.3.4) + actionview (= 7.1.3.4) + activejob (= 7.1.3.4) + activemodel (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + bundler (>= 1.15.0) + railties (= 7.1.3.4) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (7.1.3.4) + actionpack (= 7.1.3.4) + activesupport (= 7.1.3.4) + irb + rackup (>= 1.0.0) + rake (>= 12.2) + thor (~> 1.0, >= 1.2.2) + zeitwerk (~> 2.6) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rdoc (6.7.0) + psych (>= 4.0.0) + regexp_parser (2.9.2) + reline (0.5.9) + io-console (~> 0.5) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stringio (3.1.1) + strscan (3.1.0) + thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + yard (0.9.36) + zeitwerk (2.6.17) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + builder + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rails (~> 7.1.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + yard (~> 0.9) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.4_rails7.gemfile b/gemfiles/ruby_3.4_rails7.gemfile new file mode 100644 index 0000000000..42fe17bfc2 --- /dev/null +++ b/gemfiles/ruby_3.4_rails7.gemfile @@ -0,0 +1,48 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "builder" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" +gem "yard", "~> 0.9" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 7.0.0" + +group :check do + gem "ruby_memcheck", ">= 3" +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.4_rails7.gemfile.lock b/gemfiles/ruby_3.4_rails7.gemfile.lock new file mode 100644 index 0000000000..0635a6f755 --- /dev/null +++ b/gemfiles/ruby_3.4_rails7.gemfile.lock @@ -0,0 +1,332 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + +PATH + remote: .. + specs: + datadog (2.3.0) + debase-ruby_core_source (= 3.3.1) + libdatadog (~> 12.0.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (7.0.8.4) + actionpack (= 7.0.8.4) + activesupport (= 7.0.8.4) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (7.0.8.4) + actionpack (= 7.0.8.4) + activejob (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + mail (>= 2.7.1) + net-imap + net-pop + net-smtp + actionmailer (7.0.8.4) + actionpack (= 7.0.8.4) + actionview (= 7.0.8.4) + activejob (= 7.0.8.4) + activesupport (= 7.0.8.4) + mail (~> 2.5, >= 2.5.4) + net-imap + net-pop + net-smtp + rails-dom-testing (~> 2.0) + actionpack (7.0.8.4) + actionview (= 7.0.8.4) + activesupport (= 7.0.8.4) + rack (~> 2.0, >= 2.2.4) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (7.0.8.4) + actionpack (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + globalid (>= 0.6.0) + nokogiri (>= 1.8.5) + actionview (7.0.8.4) + activesupport (= 7.0.8.4) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (7.0.8.4) + activesupport (= 7.0.8.4) + globalid (>= 0.3.6) + activemodel (7.0.8.4) + activesupport (= 7.0.8.4) + activerecord (7.0.8.4) + activemodel (= 7.0.8.4) + activesupport (= 7.0.8.4) + activestorage (7.0.8.4) + actionpack (= 7.0.8.4) + activejob (= 7.0.8.4) + activerecord (= 7.0.8.4) + activesupport (= 7.0.8.4) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (7.0.8.4) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + builder (3.3.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + crack (1.0.0) + bigdecimal + rexml + crass (1.0.6) + date (3.3.4) + debase-ruby_core_source (3.3.1) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + erubi (1.13.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.4) + hashdiff (1.1.1) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (12.0.0.1.0) + libdatadog (12.0.0.1.0-aarch64-linux) + libdatadog (12.0.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_mime (1.1.5) + mini_portile2 (2.8.7) + minitest (5.25.1) + msgpack (1.7.2) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + nio4r (2.7.3) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (6.0.1) + racc (1.8.1) + rack (2.2.9) + rack-test (2.1.0) + rack (>= 1.3) + rails (7.0.8.4) + actioncable (= 7.0.8.4) + actionmailbox (= 7.0.8.4) + actionmailer (= 7.0.8.4) + actionpack (= 7.0.8.4) + actiontext (= 7.0.8.4) + actionview (= 7.0.8.4) + activejob (= 7.0.8.4) + activemodel (= 7.0.8.4) + activerecord (= 7.0.8.4) + activestorage (= 7.0.8.4) + activesupport (= 7.0.8.4) + bundler (>= 1.15.0) + railties (= 7.0.8.4) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (7.0.8.4) + actionpack (= 7.0.8.4) + activesupport (= 7.0.8.4) + method_source + rake (>= 12.2) + thor (~> 1.0) + zeitwerk (~> 2.5) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.2) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + strscan (3.1.1) + thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + yard (0.9.36) + zeitwerk (2.6.17) + +PLATFORMS + aarch64-linux + ruby + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + builder + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rails (~> 7.0.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick! + yard (~> 0.9) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.4_rails71.gemfile b/gemfiles/ruby_3.4_rails71.gemfile new file mode 100644 index 0000000000..c197c00841 --- /dev/null +++ b/gemfiles/ruby_3.4_rails71.gemfile @@ -0,0 +1,48 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "builder" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "rexml", ">= 3.2.7" +gem "webrick", git: "https://github.com/ruby/webrick.git", ref: "0c600e169bd4ae267cb5eeb6197277c848323bbe" +gem "yard", "~> 0.9" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "ffi", "~> 1.16.3", require: false +gem "rails", "~> 7.1.0" + +group :check do + gem "ruby_memcheck", ">= 3" +end + +group :dev do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.4_rails71.gemfile.lock b/gemfiles/ruby_3.4_rails71.gemfile.lock new file mode 100644 index 0000000000..72ba81dc60 --- /dev/null +++ b/gemfiles/ruby_3.4_rails71.gemfile.lock @@ -0,0 +1,362 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +GIT + remote: https://github.com/ruby/webrick.git + revision: 0c600e169bd4ae267cb5eeb6197277c848323bbe + ref: 0c600e169bd4ae267cb5eeb6197277c848323bbe + specs: + webrick (1.8.1) + +PATH + remote: .. + specs: + datadog (2.3.0) + debase-ruby_core_source (= 3.3.1) + libdatadog (~> 12.0.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (7.1.3.4) + actionpack (= 7.1.3.4) + activesupport (= 7.1.3.4) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + zeitwerk (~> 2.6) + actionmailbox (7.1.3.4) + actionpack (= 7.1.3.4) + activejob (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + mail (>= 2.7.1) + net-imap + net-pop + net-smtp + actionmailer (7.1.3.4) + actionpack (= 7.1.3.4) + actionview (= 7.1.3.4) + activejob (= 7.1.3.4) + activesupport (= 7.1.3.4) + mail (~> 2.5, >= 2.5.4) + net-imap + net-pop + net-smtp + rails-dom-testing (~> 2.2) + actionpack (7.1.3.4) + actionview (= 7.1.3.4) + activesupport (= 7.1.3.4) + nokogiri (>= 1.8.5) + racc + rack (>= 2.2.4) + rack-session (>= 1.0.1) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + actiontext (7.1.3.4) + actionpack (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + globalid (>= 0.6.0) + nokogiri (>= 1.8.5) + actionview (7.1.3.4) + activesupport (= 7.1.3.4) + builder (~> 3.1) + erubi (~> 1.11) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + activejob (7.1.3.4) + activesupport (= 7.1.3.4) + globalid (>= 0.3.6) + activemodel (7.1.3.4) + activesupport (= 7.1.3.4) + activerecord (7.1.3.4) + activemodel (= 7.1.3.4) + activesupport (= 7.1.3.4) + timeout (>= 0.4.0) + activestorage (7.1.3.4) + actionpack (= 7.1.3.4) + activejob (= 7.1.3.4) + activerecord (= 7.1.3.4) + activesupport (= 7.1.3.4) + marcel (~> 1.0) + activesupport (7.1.3.4) + base64 + bigdecimal + concurrent-ruby (~> 1.0, >= 1.0.2) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + minitest (>= 5.1) + mutex_m + tzinfo (~> 2.0) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.8) + binding_of_caller (1.0.1) + debug_inspector (>= 1.2.0) + builder (3.3.0) + climate_control (0.2.0) + coderay (1.1.3) + concurrent-ruby (1.3.4) + connection_pool (2.4.1) + crack (1.0.0) + bigdecimal + rexml + crass (1.0.6) + date (3.3.4) + debase-ruby_core_source (3.3.1) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.1) + dogstatsd-ruby (5.6.1) + drb (2.2.1) + erubi (1.13.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.4) + hashdiff (1.1.1) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + io-console (0.7.2) + irb (1.14.0) + rdoc (>= 4.0.0) + reline (>= 0.4.2) + json (2.7.2) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (12.0.0.1.0) + libdatadog (12.0.0.1.0-aarch64-linux) + libdatadog (12.0.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + memory_profiler (0.9.14) + method_source (1.1.0) + mini_mime (1.1.5) + mini_portile2 (2.8.7) + minitest (5.25.1) + msgpack (1.7.2) + mutex_m (0.2.0) + net-imap (0.4.14) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + nio4r (2.7.3) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) + os (1.1.4) + parallel (1.26.3) + parser (3.3.4.2) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + psych (5.1.2) + stringio + public_suffix (6.0.1) + racc (1.8.1) + rack (3.1.7) + rack-session (2.0.0) + rack (>= 3.0.0) + rack-test (2.1.0) + rack (>= 1.3) + rackup (2.1.0) + rack (>= 3) + webrick (~> 1.8) + rails (7.1.3.4) + actioncable (= 7.1.3.4) + actionmailbox (= 7.1.3.4) + actionmailer (= 7.1.3.4) + actionpack (= 7.1.3.4) + actiontext (= 7.1.3.4) + actionview (= 7.1.3.4) + activejob (= 7.1.3.4) + activemodel (= 7.1.3.4) + activerecord (= 7.1.3.4) + activestorage (= 7.1.3.4) + activesupport (= 7.1.3.4) + bundler (>= 1.15.0) + railties (= 7.1.3.4) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (7.1.3.4) + actionpack (= 7.1.3.4) + activesupport (= 7.1.3.4) + irb + rackup (>= 1.0.0) + rake (>= 12.2) + thor (~> 1.0, >= 1.2.2) + zeitwerk (~> 2.6) + rainbow (3.1.1) + rake (13.2.1) + rake-compiler (1.2.7) + rake + rdoc (6.7.0) + psych (>= 4.0.0) + regexp_parser (2.9.2) + reline (0.5.9) + io-console (~> 0.5) + rexml (3.3.6) + strscan + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.1) + rspec-wait (0.0.10) + rspec (>= 3.0) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.32.1) + parser (>= 3.3.1.0) + rubocop-capybara (2.21.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.21.1) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + ruby_memcheck (3.0.0) + nokogiri + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + stringio (3.1.1) + strscan (3.1.1) + thor (1.3.1) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.4.0) + webmock (3.23.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + yard (0.9.36) + zeitwerk (2.6.17) + +PLATFORMS + aarch64-linux + ruby + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + builder + climate_control (~> 0.2.0) + concurrent-ruby + datadog! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + ffi (~> 1.16.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rails (~> 7.1.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rexml (>= 3.2.7) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + ruby_memcheck (>= 3) + simplecov! + simplecov-cobertura (~> 2.1.0) + warning (~> 1) + webmock (>= 3.10.0) + webrick! + yard (~> 0.9) + +BUNDLED WITH + 2.3.26 diff --git a/lib/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rb b/lib/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rb new file mode 100644 index 0000000000..d18ff8e2ca --- /dev/null +++ b/lib/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rb @@ -0,0 +1,78 @@ +# frozen_string_literal: true + +require_relative '../../../metadata/ext' + +module Datadog + module Tracing + module Contrib + module ActionPack + module ActionDispatch + # Instrumentation for ActionDispatch components + module Instrumentation + module_function + + def set_http_route_tags(route_spec, script_name) + return unless Tracing.enabled? + + return unless route_spec + + request_trace = Tracing.active_trace + return unless request_trace + + request_trace.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, route_spec.to_s.gsub(/\(.:format\)\z/, '')) + + if script_name && !script_name.empty? + request_trace.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE_PATH, script_name) + end + end + + def dispatcher_route?(route) + return true if route.dispatcher? + + # in Rails 4 there is no #rack_app method on the app + return true if route.app.respond_to?(:rack_app) && !route.app.rack_app.nil? + + false + end + + # Instrumentation for ActionDispatch::Journey components + module Journey + # Instrumentation for ActionDispatch::Journey::Router for Rails versions older than 7.1 + module Router + def find_routes(req) + result = super + + # result is an array of [match, parameters, route] tuples + routes = result.map(&:last) + + routes.each do |route| + if Instrumentation.dispatcher_route?(route) + Instrumentation.set_http_route_tags(route.path.spec, req.env['SCRIPT_NAME']) + break + end + end + + result + end + end + + # Since Rails 7.1 `Router#find_routes` makes the route computation lazy + # https://github.com/rails/rails/commit/35b280fcc2d5d474f9f2be3aca3ae7aa6bba66eb + module LazyRouter + def find_routes(req) + super do |match, parameters, route| + if Instrumentation.dispatcher_route?(route) + Instrumentation.set_http_route_tags(route.path.spec, req.env['SCRIPT_NAME']) + end + + yield [match, parameters, route] + end + end + end + end + end + end + end + end + end +end diff --git a/lib/datadog/tracing/contrib/action_pack/action_dispatch/patcher.rb b/lib/datadog/tracing/contrib/action_pack/action_dispatch/patcher.rb new file mode 100644 index 0000000000..bb371f81d2 --- /dev/null +++ b/lib/datadog/tracing/contrib/action_pack/action_dispatch/patcher.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +require_relative '../../patcher' +require_relative 'instrumentation' + +module Datadog + module Tracing + module Contrib + module ActionPack + module ActionDispatch + # Patcher for ActionController components + module Patcher + include Contrib::Patcher + + module_function + + def target_version + Integration.version + end + + def patch + if ::ActionPack.gem_version >= Gem::Version.new('7.1') + ::ActionDispatch::Journey::Router.prepend(ActionDispatch::Instrumentation::Journey::LazyRouter) + else + ::ActionDispatch::Journey::Router.prepend(ActionDispatch::Instrumentation::Journey::Router) + end + end + end + end + end + end + end +end diff --git a/lib/datadog/tracing/contrib/action_pack/patcher.rb b/lib/datadog/tracing/contrib/action_pack/patcher.rb index c124718921..ebab174181 100644 --- a/lib/datadog/tracing/contrib/action_pack/patcher.rb +++ b/lib/datadog/tracing/contrib/action_pack/patcher.rb @@ -2,6 +2,7 @@ require_relative '../patcher' require_relative 'action_controller/patcher' +require_relative 'action_dispatch/patcher' module Datadog module Tracing @@ -19,6 +20,7 @@ def target_version def patch ActionController::Patcher.patch + ActionDispatch::Patcher.patch end end end diff --git a/lib/datadog/tracing/contrib/grape/endpoint.rb b/lib/datadog/tracing/contrib/grape/endpoint.rb index 292f32d072..1473585a42 100644 --- a/lib/datadog/tracing/contrib/grape/endpoint.rb +++ b/lib/datadog/tracing/contrib/grape/endpoint.rb @@ -42,6 +42,7 @@ def endpoint_start_process(_name, _start, _finish, _id, payload) # collect endpoint details endpoint = payload.fetch(:endpoint) + env = payload.fetch(:env) api_view = api_view(endpoint.options[:for]) request_method = endpoint.options.fetch(:method).first path = endpoint_expand_path(endpoint) @@ -62,6 +63,18 @@ def endpoint_start_process(_name, _start, _finish, _id, payload) span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT) span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_ENDPOINT_RUN) + if (grape_route = env['grape.routing_args']) && grape_route[:route_info] + trace.set_tag( + Tracing::Metadata::Ext::HTTP::TAG_ROUTE, + # here we are removing the format from the path: + # e.g. /path/to/resource(.json) => /path/to/resource + # e.g. /path/to/resource(.:format) => /path/to/resource + grape_route[:route_info].path&.gsub(/\(\.:?\w+\)\z/, '') + ) + + trace.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE_PATH, env['SCRIPT_NAME']) + end + Thread.current[KEY_RUN] = true rescue StandardError => e Datadog.logger.error(e.message) diff --git a/lib/datadog/tracing/contrib/rack/middlewares.rb b/lib/datadog/tracing/contrib/rack/middlewares.rb index 6ac74e1371..fc2662c95c 100644 --- a/lib/datadog/tracing/contrib/rack/middlewares.rb +++ b/lib/datadog/tracing/contrib/rack/middlewares.rb @@ -138,6 +138,29 @@ def set_request_tags!(trace, request_span, env, status, headers, response, origi request_span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_REQUEST) request_span.set_tag(Tracing::Metadata::Ext::TAG_KIND, Tracing::Metadata::Ext::SpanKind::TAG_SERVER) + if status != 404 && (last_route = trace.get_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + last_script_name = trace.get_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE_PATH) || '' + + # If the last_script_name is empty but the env['SCRIPT_NAME'] is NOT empty + # then the current rack request was not routed and must be accounted for + # which only happens in pure nested rack requests i.e /rack/rack/hello/world + # + # To account for the unaccounted nested rack requests of /rack/hello/world, + # we use 'PATH_INFO knowing that rack cannot have named parameters + if last_script_name == '' && env['SCRIPT_NAME'] && env['SCRIPT_NAME'] != '' + last_script_name = last_route + last_route = env['PATH_INFO'] + end + + # Clear the route and route path tags from the request trace to avoid possibility of misplacement + trace.clear_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE) + trace.clear_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE_PATH) + + # Ensure tags are placed in rack.request span as desired + request_span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, last_script_name + last_route) + request_span.clear_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE_PATH) + end + # Set analytics sample rate if Contrib::Analytics.enabled?(configuration[:analytics_enabled]) Contrib::Analytics.set_sample_rate(request_span, configuration[:analytics_sample_rate]) @@ -195,6 +218,10 @@ def set_request_tags!(trace, request_span, env, status, headers, response, origi request_span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_USER_AGENT, user_agent) end + if request_span.get_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE).nil? && status != 404 + request_span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, env['PATH_INFO']) + end + HeaderTagging.tag_request_headers(request_span, request_header_collection, configuration) HeaderTagging.tag_response_headers(request_span, headers, configuration) if headers diff --git a/lib/datadog/tracing/contrib/sinatra/tracer.rb b/lib/datadog/tracing/contrib/sinatra/tracer.rb index 4c535c0c8c..36b823933e 100644 --- a/lib/datadog/tracing/contrib/sinatra/tracer.rb +++ b/lib/datadog/tracing/contrib/sinatra/tracer.rb @@ -69,6 +69,10 @@ def route_eval trace.resource = span.resource + _, path = env['sinatra.route'].split(' ', 2) + trace.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, path) + trace.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE_PATH, env['SCRIPT_NAME']) + sinatra_request_span = Sinatra::Env.datadog_span(env) sinatra_request_span.resource = span.resource diff --git a/lib/datadog/tracing/metadata/ext.rb b/lib/datadog/tracing/metadata/ext.rb index 02b87b8687..95cf3d4e7f 100644 --- a/lib/datadog/tracing/metadata/ext.rb +++ b/lib/datadog/tracing/metadata/ext.rb @@ -87,6 +87,8 @@ module HTTP TAG_STATUS_CODE = 'http.status_code' TAG_USER_AGENT = 'http.useragent' TAG_URL = 'http.url' + TAG_ROUTE = 'http.route' + TAG_ROUTE_PATH = 'http.route.path' TYPE_INBOUND = AppTypes::TYPE_WEB.freeze TYPE_OUTBOUND = 'http' TYPE_PROXY = 'proxy' diff --git a/sig/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rbs b/sig/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rbs new file mode 100644 index 0000000000..87364b3d31 --- /dev/null +++ b/sig/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rbs @@ -0,0 +1,21 @@ +module Datadog + module Tracing + module Contrib + module ActionPack + module ActionDispatch + module Instrumentation + def self?.set_http_route_tag: (untyped http_route) -> (nil | untyped) + module Journey + module Router + def find_routes: (untyped req) -> untyped + end + module LazyRouter + def serve: (untyped req) -> untyped + end + end + end + end + end + end + end +end diff --git a/sig/datadog/tracing/contrib/action_pack/action_dispatch/patcher.rbs b/sig/datadog/tracing/contrib/action_pack/action_dispatch/patcher.rbs new file mode 100644 index 0000000000..c4ade81bee --- /dev/null +++ b/sig/datadog/tracing/contrib/action_pack/action_dispatch/patcher.rbs @@ -0,0 +1,17 @@ +module Datadog + module Tracing + module Contrib + module ActionPack + module ActionDispatch + module Patcher + include Contrib::Patcher + + def self?.target_version: () -> untyped + + def self?.patch: () -> untyped + end + end + end + end + end +end diff --git a/sig/datadog/tracing/metadata/ext.rbs b/sig/datadog/tracing/metadata/ext.rbs index aeca3b827a..9820be2b12 100644 --- a/sig/datadog/tracing/metadata/ext.rbs +++ b/sig/datadog/tracing/metadata/ext.rbs @@ -45,6 +45,7 @@ module Datadog TAG_STATUS_CODE: ::String TAG_USER_AGENT: ::String TAG_URL: ::String + TAG_ROUTE: ::String TYPE_INBOUND: untyped TYPE_OUTBOUND: ::String TYPE_PROXY: ::String diff --git a/spec/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation_spec.rb b/spec/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation_spec.rb new file mode 100644 index 0000000000..4927478b80 --- /dev/null +++ b/spec/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation_spec.rb @@ -0,0 +1,60 @@ +require 'datadog/tracing/contrib/support/spec_helper' + +require 'datadog' +require 'datadog/tracing/contrib/action_pack/action_dispatch/instrumentation' + +RSpec.describe Datadog::Tracing::Contrib::ActionPack::ActionDispatch::Instrumentation do + describe '::set_http_route_tags' do + let(:tracing_enabled) { true } + + before do + expect(Datadog::Tracing).to receive(:enabled?).and_return(tracing_enabled) + end + + context 'when tracing is disabled' do + let(:tracing_enabled) { false } + + it 'sets no tags' do + Datadog::Tracing.trace('rack.request') do |_span, trace| + described_class.set_http_route_tags('/users/:id', '/auth') + + expect(trace.send(:meta)).not_to have_key('http.route') + expect(trace.send(:meta)).not_to have_key('http.route.path') + end + end + end + + it 'sets http.route and http.route.path tags on existing trace' do + Datadog::Tracing.trace('rack.request') do |_span, trace| + described_class.set_http_route_tags('/users/:id(.:format)', '/auth') + + expect(trace.send(:meta).fetch('http.route')).to eq('/users/:id') + expect(trace.send(:meta).fetch('http.route.path')).to eq('/auth') + end + end + + it 'sets no http.route.path when script name is nil' do + Datadog::Tracing.trace('rack.request') do |_span, trace| + described_class.set_http_route_tags('/users/:id(.:format)', nil) + + expect(trace.send(:meta).fetch('http.route')).to eq('/users/:id') + expect(trace.send(:meta)).not_to have_key('http.route.path') + end + end + + it 'sets no tags when route spec is nil' do + Datadog::Tracing.trace('rack.request') do |_span, trace| + described_class.set_http_route_tags(nil, '/auth') + + expect(trace.send(:meta)).not_to have_key('http.route') + expect(trace.send(:meta)).not_to have_key('http.route.path') + end + end + + it 'does not create new traces when no active trace is present' do + described_class.set_http_route_tags('/users/:id', '/auth') + + expect(traces).to be_empty + end + end +end diff --git a/spec/datadog/tracing/contrib/action_pack/action_dispatch/journey/router_spec.rb b/spec/datadog/tracing/contrib/action_pack/action_dispatch/journey/router_spec.rb new file mode 100644 index 0000000000..1a7610ca71 --- /dev/null +++ b/spec/datadog/tracing/contrib/action_pack/action_dispatch/journey/router_spec.rb @@ -0,0 +1,249 @@ +require 'datadog/tracing/contrib/support/spec_helper' +require 'datadog/tracing/contrib/action_pack/action_dispatch/instrumentation' + +require 'action_pack' +require 'action_controller/railtie' +require 'action_view/railtie' +require 'rails/test_unit/railtie' + +require 'spec/datadog/tracing/contrib/rails/support/configuration' +require 'spec/datadog/tracing/contrib/rails/support/application' + +RSpec.describe 'Datadog::Tracing::Contrib::ActionPack::ActionDispatch::Journey::Router' do + let(:no_db) { true } + + include Rack::Test::Methods + include_context 'Rails test application' + + after do + Datadog.configuration.tracing[:action_pack].reset! + Datadog.registry[:rack].reset_configuration! + end + + describe '#find_routes' do + before do + engine.routes.append do + get '/sign-in' => 'tokens#create' + end + + auth_engine = engine + rack_status_app = rack_app.new + + rails_test_application.instance.routes.append do + namespace :api, defaults: { format: :json } do + resources :users, only: %i[show] + + mount auth_engine => '/auth' + + match '/status', to: rack_status_app, via: :get + end + + get '/items/:id', to: 'items#by_id', id: /\d+/ + get '/items/:slug', to: 'items#by_slug', id: /(\w-)+/ + + get 'books(/:category)', to: 'books#index' + get 'books/*section/:title', to: 'books#show' + end + end + + let(:rack_app) do + stub_const( + 'RackStatusApp', + Class.new do + def call(_env) + [200, { 'Content-Type' => 'text/plain' }, ['OK']] + end + end + ) + end + + let(:controllers) { [users_controller, items_controller, books_controller] } + + let(:users_controller) do + stub_const( + 'Api::UsersController', + Class.new(ActionController::Base) do + def show + head :ok + end + end + ) + end + + let(:items_controller) do + stub_const( + 'ItemsController', + Class.new(ActionController::Base) do + def by_id + head :ok + end + + def by_slug + head :ok + end + end + ) + end + + let(:books_controller) do + stub_const( + 'BooksController', + Class.new(ActionController::Base) do + def index + head :ok + end + + def show + head :ok + end + end + ) + end + + let(:status_controller) do + stub_const( + 'StatusesController', + Class.new(ActionController::Base) do + def show + head :ok + end + end + ) + end + + let(:engine) do + stub_const('AuthEngine', Module.new) + + stub_const( + 'AuthEngine::TokensController', + Class.new(ActionController::Base) do + def create + head :ok + end + end + ) + + stub_const( + 'AuthEngine::Engine', + Class.new(::Rails::Engine) do + isolate_namespace AuthEngine + end + ) + end + + context 'with default configuration' do + before do + Datadog.configure do |c| + c.tracing.instrument :rack + c.tracing.instrument :action_pack + end + + clear_traces! + end + + it 'sets http.route when requesting a known route' do + get '/api/users/1' + + request_span = spans.first + + expect(last_response).to be_ok + expect(request_span.name).to eq('rack.request') + expect(request_span.tags.fetch('http.route')).to eq('/api/users/:id') + expect(request_span.tags).not_to have_key('http.route.path') + end + + it 'sets http.route correctly for ambiguous route with constraints' do + get '/items/1' + + request_span = spans.first + + expect(last_response).to be_ok + expect(request_span.name).to eq('rack.request') + expect(request_span.tags.fetch('http.route')).to eq('/items/:id') + expect(request_span.tags).not_to have_key('http.route.path') + end + + it 'sets http.route correctly for ambiguous route with constraints, case two' do + get '/items/something' + + request_span = spans.first + + expect(last_response).to be_ok + expect(request_span.name).to eq('rack.request') + expect(request_span.tags.fetch('http.route')).to eq('/items/:slug') + expect(request_span.tags).not_to have_key('http.route.path') + end + + it 'sets http.route correctly for routes with globbing' do + get 'books/some/section/title' + + request_span = spans.first + + expect(last_response).to be_ok + expect(request_span.name).to eq('rack.request') + expect(request_span.tags.fetch('http.route')).to eq('/books/*section/:title') + expect(request_span.tags).not_to have_key('http.route.path') + end + + it 'sets http.route correctly for routes with optional parameter' do + get 'books/some-category' + + request_span = spans.first + + expect(last_response).to be_ok + expect(request_span.name).to eq('rack.request') + expect(request_span.tags.fetch('http.route')).to eq('/books(/:category)') + expect(request_span.tags).not_to have_key('http.route.path') + end + + it 'sets http.route and http.route.path for rails engine routes' do + get '/api/auth/sign-in' + + request_span = spans.first + + expect(last_response).to be_ok + expect(request_span.name).to eq('rack.request') + expect(request_span.tags.fetch('http.route')).to eq('/api/auth/sign-in') + expect(request_span.tags).not_to have_key('http.route.path') + end + + it 'sets http.route for a route to a rack app' do + get '/api/status' + + request_span = spans.first + + expect(last_response).to be_ok + expect(request_span.name).to eq('rack.request') + expect(request_span.tags.fetch('http.route')).to eq('/api/status') + expect(request_span.tags).not_to have_key('http.route.path') + end + + it 'does not set http.route when requesting an unknown route' do + get '/nope' + + request_span = spans.first + + expect(last_response).to be_not_found + expect(request_span.name).to eq('rack.request') + expect(request_span.tags).not_to have_key('http.route') + expect(request_span.tags).not_to have_key('http.route.path') + end + end + + context 'when tracing is disabled' do + before do + Datadog.configure do |c| + c.tracing.enabled = false + end + + clear_traces! + end + + it 'does not set http.route' do + get '/api/users/1' + + expect(traces).to be_empty + end + end + end +end diff --git a/spec/datadog/tracing/contrib/grape/tracer_spec.rb b/spec/datadog/tracing/contrib/grape/tracer_spec.rb index f4f71c6d9b..ee94ea02c7 100644 --- a/spec/datadog/tracing/contrib/grape/tracer_spec.rb +++ b/spec/datadog/tracing/contrib/grape/tracer_spec.rb @@ -13,6 +13,7 @@ let(:render_span) { spans.find { |x| x.name == Datadog::Tracing::Contrib::Grape::Ext::SPAN_ENDPOINT_RENDER } } let(:run_span) { spans.find { |x| x.name == Datadog::Tracing::Contrib::Grape::Ext::SPAN_ENDPOINT_RUN } } + let(:rack_span) { sorted_spans.reverse.find { |x| x.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST } } let(:run_filter_span) { spans.find { |x| x.name == Datadog::Tracing::Contrib::Grape::Ext::SPAN_ENDPOINT_RUN_FILTERS } } let(:span) { spans.last } @@ -198,6 +199,9 @@ .to eq('endpoint_run') expect(run_span.get_tag('http.status_code')).to eq('200') + + expect(trace.send(:meta).fetch(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/base/success') end end @@ -265,6 +269,9 @@ .to eq('endpoint_run') expect(run_span.get_tag('http.status_code')).to eq('200') + + expect(trace.send(:meta).fetch(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/filtered/before_after') end end end @@ -296,6 +303,8 @@ expect(span.get_tag(Datadog::Tracing::Metadata::Ext::TAG_OPERATION)) .to eq('endpoint_run') expect(span.get_tag('http.status_code')).to eq('405') + expect(trace.send(:meta).fetch(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/base/hard_failure') end end end @@ -353,6 +362,9 @@ .to eq('endpoint_run') # Status code has not been set yet at this instrumentation point expect(run_span.get_tag('http.status_code')).to be_nil + + expect(trace.send(:meta).fetch(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/base/hard_failure') end end @@ -402,6 +414,8 @@ expect(run_span.get_tag(Datadog::Tracing::Metadata::Ext::TAG_COMPONENT)).to eq('grape') expect(run_span.get_tag(Datadog::Tracing::Metadata::Ext::TAG_OPERATION)) .to eq('endpoint_run') + expect(trace.send(:meta).fetch(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/filtered_exception/before') end end end @@ -419,6 +433,8 @@ expect(span.get_tag(Datadog::Tracing::Metadata::Ext::TAG_OPERATION)) .to eq('endpoint_run') expect(span.get_tag('http.status_code')).to eq('405') + expect(trace.send(:meta).fetch(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/base/soft_failure') end context 'and error_responses' do @@ -435,6 +451,8 @@ expect(span.get_tag(Datadog::Tracing::Metadata::Ext::TAG_OPERATION)) .to eq('endpoint_run') expect(span.get_tag('http.status_code')).to eq('405') + expect(trace.send(:meta).fetch(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/base/soft_failure') end end @@ -452,6 +470,8 @@ expect(span.get_tag(Datadog::Tracing::Metadata::Ext::TAG_OPERATION)) .to eq('endpoint_run') expect(span.get_tag('http.status_code')).to eq('405') + expect(trace.send(:meta).fetch(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/base/soft_failure') end end @@ -469,6 +489,8 @@ expect(span.get_tag(Datadog::Tracing::Metadata::Ext::TAG_OPERATION)) .to eq('endpoint_run') expect(span.get_tag('http.status_code')).to eq('405') + expect(trace.send(:meta).fetch(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/base/soft_failure') end end @@ -486,6 +508,9 @@ expect(span.get_tag(Datadog::Tracing::Metadata::Ext::TAG_OPERATION)) .to eq('endpoint_run') expect(span.get_tag('http.status_code')).to eq('405') + + expect(trace.send(:meta).fetch(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/base/soft_failure') end end end @@ -535,6 +560,9 @@ .to eq('endpoint_run') expect(run_span.get_tag('http.status_code')).to eq('500') + + expect(trace.send(:meta).fetch(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/base/soft_failure') end end end @@ -583,6 +611,9 @@ expect(run_span.get_tag(Datadog::Tracing::Contrib::Grape::Ext::TAG_ROUTE_PATH)).to eq('/widgets') expect(run_span.get_tag(Datadog::Tracing::Contrib::Grape::Ext::TAG_ROUTE_METHOD)).to eq('GET') + + expect(trace.send(:meta).fetch(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/widgets') end end @@ -629,6 +660,9 @@ expect(run_span.get_tag(Datadog::Tracing::Contrib::Grape::Ext::TAG_ROUTE_PATH)).to eq('/widgets') expect(run_span.get_tag(Datadog::Tracing::Contrib::Grape::Ext::TAG_ROUTE_METHOD)).to eq('POST') + + expect(trace.send(:meta).fetch(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/widgets') end end @@ -665,6 +699,9 @@ expect(run_span.get_tag(Datadog::Tracing::Contrib::Grape::Ext::TAG_ROUTE_PATH)).to eq('/nested/widgets') expect(run_span.get_tag(Datadog::Tracing::Contrib::Grape::Ext::TAG_ROUTE_METHOD)).to eq('GET') + + expect(trace.send(:meta).fetch(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/nested/widgets') end end end @@ -751,7 +788,6 @@ expect(run_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_METHOD)).to eq('GET') expect(run_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_URL)).to eq('/success') - expect(run_span.get_tag(Datadog::Tracing::Contrib::Grape::Ext::TAG_ROUTE_PATH)).to eq('/success') expect(run_span.get_tag(Datadog::Tracing::Contrib::Grape::Ext::TAG_ROUTE_METHOD)).to eq('GET') expect(rack_span.name).to eq('rack.request') @@ -760,6 +796,7 @@ expect(rack_span.resource).to eq('RackTestingAPI GET /success') expect(rack_span).to_not have_error expect(rack_span).to be_root_span + expect(rack_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)).to eq('/api/success') end end @@ -825,6 +862,8 @@ expect(rack_span.resource).to eq('RackTestingAPI GET /hard_failure') expect(rack_span).to have_error expect(rack_span).to be_root_span + expect(rack_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/api/hard_failure') end end @@ -846,6 +885,8 @@ expect(span.resource).to eq('GET 404') expect(span).to_not have_error expect(span).to be_root_span + expect(span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to be_nil end end @@ -860,6 +901,10 @@ run_span = spans.find { |s| s.name == 'grape.endpoint_run' } expect(run_span.name).to eq('grape.endpoint_run') expect(run_span.resource).to eq('RackTestingAPI GET /span_resource_rack/span_resource') + + rack_span = spans.find { |x| x.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST } + expect(rack_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/api/span_resource_rack/span_resource') end it 'sets the trace resource before calling the endpoint' do diff --git a/spec/datadog/tracing/contrib/rack/http_route_spec.rb b/spec/datadog/tracing/contrib/rack/http_route_spec.rb new file mode 100644 index 0000000000..d5d943c7c2 --- /dev/null +++ b/spec/datadog/tracing/contrib/rack/http_route_spec.rb @@ -0,0 +1,73 @@ +require 'datadog/tracing/contrib/support/spec_helper' + +require 'rack/test' + +require 'datadog' +require 'datadog/tracing/contrib/rack/middlewares' + +RSpec.describe 'Rack testing for http.route' do + include Rack::Test::Methods + + around(:suite) do |example| + Datadog.configure do |c| + c.tracing.instrument :rack + end + + example.run + ensure + Datadog.configuration.tracing[:rack].reset! + end + + let(:app) do + app = rack_app + + Rack::Builder.new do + use Datadog::Tracing::Contrib::Rack::TraceMiddleware + + map('/') { run app } + map('/rack') { run app } + end.to_app + end + + let(:rack_app) do + Rack::Builder.new do + map '/hello/world' do + run ->(_env) { [200, { 'content-type' => 'text/plain' }, 'hello world'] } + end + + map '/hello/:id' do + run ->(_env) { [200, { 'content-type' => 'text/plain' }, "hello #{params[:id]}"] } + end + end + end + + it 'sets http.route tag on request to base route' do + response = get('/hello/world') + + expect(response).to be_ok + expect(request_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/hello/world') + end + + it 'sets http.route tag on request to nested app route' do + response = get('/rack/hello/world') + + expect(response).to be_ok + expect(request_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/rack/hello/world') + end + + it 'sets no http.route tag when response status is 404' do + response = get('/no_route') + + expect(response).to be_not_found + expect(request_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to be_nil + end + + def request_span + spans.detect do |span| + span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST + end + end +end diff --git a/spec/datadog/tracing/contrib/rails/rack_spec.rb b/spec/datadog/tracing/contrib/rails/rack_spec.rb index f0b58c8923..9967decb34 100644 --- a/spec/datadog/tracing/contrib/rails/rack_spec.rb +++ b/spec/datadog/tracing/contrib/rails/rack_spec.rb @@ -151,6 +151,8 @@ def internal_server_error .to eq('rack') expect(request_span.get_tag(Datadog::Tracing::Metadata::Ext::TAG_OPERATION)) .to eq('request') + expect(request_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/full') expect(controller_span.name).to eq('rails.action_controller') expect(controller_span.type).to eq('web') @@ -387,6 +389,8 @@ def internal_server_error .to eq('rack') expect(request_span.get_tag(Datadog::Tracing::Metadata::Ext::TAG_OPERATION)) .to eq('request') + expect(request_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/error') expect(controller_span.name).to eq('rails.action_controller') expect(controller_span).to have_error @@ -422,6 +426,8 @@ def internal_server_error .to eq('rack') expect(request_span.get_tag(Datadog::Tracing::Metadata::Ext::TAG_OPERATION)) .to eq('request') + expect(request_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/soft_error') expect(controller_span.name).to eq('rails.action_controller') expect(controller_span).to have_error @@ -460,6 +466,8 @@ def internal_server_error .to eq('rack') expect(request_span.get_tag(Datadog::Tracing::Metadata::Ext::TAG_OPERATION)) .to eq('request') + expect(request_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + .to eq('/sub_error') expect(controller_span.name).to eq('rails.action_controller') expect(controller_span).to have_error @@ -573,6 +581,7 @@ def internal_server_error request_span = spans[0] expect(trace.resource).to eq('GET 404') + expect(trace.send(:meta)).not_to have_key('http.route') expect(request_span.name).to eq('rack.request') expect(request_span.type).to eq('web') @@ -599,6 +608,7 @@ def internal_server_error request_span = spans[0] expect(trace.resource).to eq('TestController#explicitly_not_found') + expect(trace.send(:meta).fetch('http.route')).to eq('/explicitly_not_found') expect(request_span.name).to eq('rack.request') expect(request_span.type).to eq('web') diff --git a/spec/datadog/tracing/contrib/rails/support/deprecation.rb b/spec/datadog/tracing/contrib/rails/support/deprecation.rb index 095cd45bfc..5724fa9a58 100644 --- a/spec/datadog/tracing/contrib/rails/support/deprecation.rb +++ b/spec/datadog/tracing/contrib/rails/support/deprecation.rb @@ -4,5 +4,11 @@ def raise_on_rails_deprecation! # was introduced that allows fine grain configuration # of which warnings are allowed, in case we need # such feature. - ActiveSupport::Deprecation.behavior = :raise + # + # In Rails 7.1 calling ActiveSupport::Deprecation.behavior= is deprecated + if defined?(Rails) && Rails.gem_version >= Gem::Version.new(7.1) + Rails.deprecator.behavior = :raise + else + ActiveSupport::Deprecation.behavior = :raise + end end diff --git a/spec/datadog/tracing/contrib/rails/support/rails5.rb b/spec/datadog/tracing/contrib/rails/support/rails5.rb index 8eb099e462..8b149a4d48 100644 --- a/spec/datadog/tracing/contrib/rails/support/rails5.rb +++ b/spec/datadog/tracing/contrib/rails/support/rails5.rb @@ -36,14 +36,16 @@ def config.database_configuration instance_eval(&during_init) - config.active_job.queue_adapter = :inline - if ENV['USE_SIDEKIQ'] - config.active_job.queue_adapter = :sidekiq - # add Sidekiq middleware - Sidekiq::Testing.server_middleware do |chain| - chain.add( - Datadog::Tracing::Contrib::Sidekiq::ServerTracer - ) + if defined?(ActiveJob) + config.active_job.queue_adapter = :inline + if ENV['USE_SIDEKIQ'] + config.active_job.queue_adapter = :sidekiq + # add Sidekiq middleware + Sidekiq::Testing.server_middleware do |chain| + chain.add( + Datadog::Tracing::Contrib::Sidekiq::ServerTracer + ) + end end end end @@ -64,11 +66,13 @@ def config.database_configuration end end - Rails.application.config.active_job.queue_adapter = if ENV['USE_SIDEKIQ'] - :sidekiq - else - :inline - end + if Rails.application.config.respond_to?(:active_job) + Rails.application.config.active_job.queue_adapter = if ENV['USE_SIDEKIQ'] + :sidekiq + else + :inline + end + end before_test_init.call initialize! @@ -91,7 +95,7 @@ def config.database_configuration append_controllers! # Force connection to initialize, and dump some spans - application_record.connection + application_record&.connection # Skip default Rails exception page rendering. # This avoid polluting the trace under test diff --git a/spec/datadog/tracing/contrib/rails/support/rails6.rb b/spec/datadog/tracing/contrib/rails/support/rails6.rb index 4289f553bd..212f9c9a81 100644 --- a/spec/datadog/tracing/contrib/rails/support/rails6.rb +++ b/spec/datadog/tracing/contrib/rails/support/rails6.rb @@ -39,14 +39,16 @@ def config.database_configuration instance_eval(&during_init) - config.active_job.queue_adapter = :inline - if ENV['USE_SIDEKIQ'] - config.active_job.queue_adapter = :sidekiq - # add Sidekiq middleware - Sidekiq::Testing.server_middleware do |chain| - chain.add( - Datadog::Tracing::Contrib::Sidekiq::ServerTracer - ) + if config.respond_to?(:active_job) + config.active_job.queue_adapter = :inline + if ENV['USE_SIDEKIQ'] + config.active_job.queue_adapter = :sidekiq + # add Sidekiq middleware + Sidekiq::Testing.server_middleware do |chain| + chain.add( + Datadog::Tracing::Contrib::Sidekiq::ServerTracer + ) + end end end end @@ -67,11 +69,13 @@ def config.database_configuration end end - Rails.application.config.active_job.queue_adapter = if ENV['USE_SIDEKIQ'] - :sidekiq - else - :inline - end + if Rails.application.config.respond_to?(:active_job) + Rails.application.config.active_job.queue_adapter = if ENV['USE_SIDEKIQ'] + :sidekiq + else + :inline + end + end Rails.application.config.file_watcher = Class.new(ActiveSupport::FileUpdateChecker) do # When running in full application mode, Rails tries to monitor @@ -181,13 +185,11 @@ def reset_rails_configuration! # TODO: Remove this side-effect on missing log entries Lograge.remove_existing_log_subscriptions if defined?(::Lograge) - if Module.const_defined?(:ActiveRecord) - reset_class_variable(ActiveRecord::Railtie::Configuration, :@@options) + reset_class_variable(ActiveRecord::Railtie::Configuration, :@@options) if Module.const_defined?(:ActiveRecord) - # After `deep_dup`, the sentinel `NULL_OPTION` is inadvertently changed. We restore it here. - if Rails::VERSION::MINOR < 1 - ActiveRecord::Railtie.config.action_view.finalize_compiled_template_methods = ActionView::Railtie::NULL_OPTION - end + # After `deep_dup`, the sentinel `NULL_OPTION` is inadvertently changed. We restore it here. + if Rails::VERSION::MINOR < 1 + ActionView::Railtie.config.action_view.finalize_compiled_template_methods = ActionView::Railtie::NULL_OPTION end reset_class_variable(ActiveSupport::Dependencies, :@@autoload_paths) diff --git a/spec/datadog/tracing/contrib/rails/support/rails7.rb b/spec/datadog/tracing/contrib/rails/support/rails7.rb new file mode 100644 index 0000000000..63c20326db --- /dev/null +++ b/spec/datadog/tracing/contrib/rails/support/rails7.rb @@ -0,0 +1,213 @@ +# Loaded by the `bin/rails` script in a real Rails application +require 'rails/command' + +# We may not always want to require rails/all, especially when we don't have a database. +# require is already done where Rails test application is used, manually or through rails_helper. + +if ENV['USE_SIDEKIQ'] + require 'sidekiq/testing' + require 'datadog/tracing/contrib/sidekiq/server_tracer' +end + +RSpec.shared_context 'Rails 7 test application' do + let(:rails_base_application) do + klass = Class.new(Rails::Application) do + def config.database_configuration + parsed = super + raise parsed.to_yaml # Replace this line to add custom connections to the hash from database.yml + end + end + during_init = initialize_block + + klass.send(:define_method, :initialize) do |*args| + super(*args) + redis_cache = + if Gem.loaded_specs['redis-activesupport'] + [:redis_store, { url: ENV['REDIS_URL'] }] + else + [:redis_cache_store, { url: ENV['REDIS_URL'] }] + end + file_cache = [:file_store, '/tmp/datadog-rb/cache/'] + + config.load_defaults '7.0' + config.secret_key_base = 'f624861242e4ccf20eacb6bb48a886da' + config.active_record.cache_versioning = false if Gem.loaded_specs['redis-activesupport'] + config.cache_store = ENV['REDIS_URL'] ? redis_cache : file_cache + config.eager_load = false + config.consider_all_requests_local = true + config.hosts.clear # Allow requests for any hostname during tests + config.active_support.remove_deprecated_time_with_zone_name = false + + instance_eval(&during_init) + + if config.respond_to?(:active_job) + config.active_job.queue_adapter = :inline + if ENV['USE_SIDEKIQ'] + config.active_job.queue_adapter = :sidekiq + # add Sidekiq middleware + Sidekiq::Testing.server_middleware do |chain| + chain.add( + Datadog::Tracing::Contrib::Sidekiq::ServerTracer + ) + end + end + end + end + + before_test_init = before_test_initialize_block + after_test_init = after_test_initialize_block + + klass.send(:define_method, :test_initialize!) do + # we want to disable explicit instrumentation + # when testing auto patching + if ENV['TEST_AUTO_INSTRUMENT'] == 'true' + require 'datadog/auto_instrument' + else + # Enables the auto-instrumentation for the testing application + Datadog.configure do |c| + c.tracing.instrument :rails + c.tracing.instrument :redis if Gem.loaded_specs['redis'] && defined?(::Redis) + end + end + + if Rails.application.config.respond_to?(:active_job) + Rails.application.config.active_job.queue_adapter = ENV['USE_SIDEKIQ'] ? :sidekiq : :inline + end + + Rails.application.config.file_watcher = Class.new(ActiveSupport::FileUpdateChecker) do + # When running in full application mode, Rails tries to monitor + # the file system for changes. This causes issues when using + # {ActionView::FixtureResolver} to mock the filesystem for templates + # as this test resolver wasn't meant to work with a full application. + # + # Because {ActionView::FixtureResolver} doesn't have a complete filesystem, + # it sets its base path to '', which later in the file watcher gets translated to: + # "Monitor '**/*' for changes", which means monitoring the whole system, causing + # many "permission denied errors". + # + # This method removes the blank path ('') created by {ActionView::FixtureResolver} + # in order to allow the file watcher to skip monitoring the "filesystem changes" + # of the in-memory fixtures. + def initialize(files, dirs = {}, &block) + dirs = dirs.delete('') if dirs.include?('') + + super(files, dirs, &block) + end + end + + before_test_init.call + initialize! + after_test_init.call + end + Class.new(klass) + end + + let(:before_test_initialize_block) do + proc do + append_routes! + end + end + + let(:after_test_initialize_block) do + proc do + # Rails autoloader recommends controllers to be loaded + # after initialization. This will be enforced when `zeitwerk` + # becomes the only supported autoloader. + append_controllers! + + # Force connection to initialize, and dump some spans + application_record.connection unless (defined? no_db) && no_db + + # Skip default Rails exception page rendering. + # This avoid polluting the trace under test + # with render and partial_render templates for the + # error page. + # + # We could completely disable the {DebugExceptions} middleware, + # but that affects Rails' internal error propagation logic. + # render_for_browser_request(request, wrapper) + allow_any_instance_of(::ActionDispatch::DebugExceptions).to receive(:render_exception) do |this, env, exception| + wrapper = ::ActionDispatch::ExceptionWrapper.new(env, exception) + + this.send(:render, wrapper.status_code, 'Test error response body', 'text/plain') + end + end + end + + around do |example| + reset_rails_configuration! + + example.run + ensure + reset_rails_configuration! + + # Push this to base when Rails 3 removed + # Reset references stored in the Rails class + Rails.app_class = nil + Rails.cache = nil + end + + def append_routes! + # Make sure to load controllers first + # otherwise routes won't draw properly. + test_routes = routes + + rails_test_application.instance.routes.append do + test_routes.each do |k, v| + # no-dd-sa + if k.is_a?(Array) + send(k.first, k.last => v) + else + get k => v + end + end + end + + # ActionText requires ApplicationController to be loaded since Rails 6 + example = self + ActiveSupport.on_load(:action_text_content) do + example.stub_const('ApplicationController', Class.new(ActionController::Base)) + end + end + + def append_controllers! + controllers + end + + # Rails leaves a bunch of global class configuration on Rails::Railtie::Configuration in class variables + # We need to reset these so they don't carry over between example runs + def reset_rails_configuration! + # Reset autoloaded constants + ActiveSupport::Dependencies.clear if Rails.application + + # TODO: Remove this side-effect on missing log entries + Lograge.remove_existing_log_subscriptions if defined?(::Lograge) + + reset_class_variable(ActiveRecord::Railtie::Configuration, :@@options) if Module.const_defined?(:ActiveRecord) + + ActiveSupport::Dependencies.autoload_paths = [] + ActiveSupport::Dependencies.autoload_once_paths = [] + ActiveSupport::Dependencies._eager_load_paths = Set.new + ActiveSupport::Dependencies._autoloaded_tracked_classes = Set.new + + Rails::Railtie::Configuration.class_variable_set(:@@eager_load_namespaces, nil) + Rails::Railtie::Configuration.class_variable_set(:@@watchable_files, nil) + Rails::Railtie::Configuration.class_variable_set(:@@watchable_dirs, nil) + if Rails::Railtie::Configuration.class_variable_defined?(:@@app_middleware) + Rails::Railtie::Configuration.class_variable_set(:@@app_middleware, Rails::Configuration::MiddlewareStackProxy.new) + end + Rails::Railtie::Configuration.class_variable_set(:@@app_generators, nil) + Rails::Railtie::Configuration.class_variable_set(:@@to_prepare_blocks, nil) + end + + # Resets configuration that needs to be restored to its original value + # between each run of a Rails application. + def reset_class_variable(clazz, variable) + value = Datadog::Tracing::Contrib::Rails::Test::Configuration.fetch( + "#{clazz}.#{variable}", + clazz.class_variable_get(variable) + ) + + clazz.class_variable_set(variable, value.deep_dup) + end +end diff --git a/spec/datadog/tracing/contrib/sinatra/multi_app_spec.rb b/spec/datadog/tracing/contrib/sinatra/multi_app_spec.rb index 0007524bfc..edf09d60dd 100644 --- a/spec/datadog/tracing/contrib/sinatra/multi_app_spec.rb +++ b/spec/datadog/tracing/contrib/sinatra/multi_app_spec.rb @@ -78,7 +78,6 @@ end expect(span.resource).to eq('GET /endpoint') - expect(span.get_tag(Datadog::Tracing::Contrib::Sinatra::Ext::TAG_ROUTE_PATH)).to eq('/endpoint') expect(span.get_tag(Datadog::Tracing::Contrib::Sinatra::Ext::TAG_SCRIPT_NAME)).to eq('/one') end end diff --git a/spec/datadog/tracing/contrib/sinatra/tracer_spec.rb b/spec/datadog/tracing/contrib/sinatra/tracer_spec.rb index 68e1bc3816..c89148a126 100644 --- a/spec/datadog/tracing/contrib/sinatra/tracer_spec.rb +++ b/spec/datadog/tracing/contrib/sinatra/tracer_spec.rb @@ -124,6 +124,8 @@ it do is_expected.to be_ok + expect(rack_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)).to eq('/') + expect(span.resource).to eq('GET /') expect(span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_URL)).to eq('/') end @@ -136,6 +138,8 @@ it do expect(response).to be_ok + expect(rack_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)).to eq('/wildcard/*') + expect(span.resource).to eq('GET /wildcard/*') expect(span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_URL)).to eq('/wildcard/1/2/3') # expect(span.get_tag(Datadog::Tracing::Contrib::Sinatra::Ext::TAG_ROUTE_PATH)).to eq('/wildcard/*') @@ -156,6 +160,10 @@ expect(response).to be_ok end + it 'sets http.route on the rack span' do + expect(rack_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)).to eq('/erb') + end + describe 'the sinatra.request span' do subject(:span) { request_span } @@ -210,6 +218,10 @@ expect(spans).to have(5).items end + it 'sets http.route on the rack span' do + expect(rack_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)).to eq('/erb_literal') + end + describe 'the sinatra.request span' do it do expect(span.resource).to eq('GET /erb_literal') @@ -271,6 +283,8 @@ expect(span).to_not have_error_type expect(span).to_not have_error_message expect(span.status).to eq(1) + + expect(rack_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)).to eq('/server_error') end end @@ -283,6 +297,8 @@ expect(span).to have_error_type('RuntimeError') expect(span).to have_error_message('test error') expect(span.status).to eq(1) + + expect(rack_span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE)).to eq('/error') end end @@ -296,6 +312,8 @@ expect(trace.resource).to eq('GET') + expect(rack_span.tags).not_to have_key(Datadog::Tracing::Metadata::Ext::HTTP::TAG_ROUTE) + expect(span.service).to eq(tracer.default_service) expect(span.resource).to eq('GET') expect(span.get_tag(Datadog::Tracing::Metadata::Ext::HTTP::TAG_METHOD)).to eq('GET')