From 7e47bcc739012c255c9dafe7ff9440bf3f9c310a Mon Sep 17 00:00:00 2001 From: Ariel Valentin Date: Mon, 6 Nov 2023 20:33:33 -0600 Subject: [PATCH 1/7] chore: Change release restrictions The toys gem checks that all actions are passing before allowing a release request to be opened, however only the CI builds are actually required. This change limits the release request requirements to look specifically for CI builds --- .toys/.data/releases.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.toys/.data/releases.yml b/.toys/.data/releases.yml index 7d689c7a4..30d6cde6c 100644 --- a/.toys/.data/releases.yml +++ b/.toys/.data/releases.yml @@ -6,6 +6,7 @@ repo: open-telemetry/opentelemetry-ruby-contrib main_branch: main # Time in seconds for release scripts to wait for CI to complete. required_checks_timeout: 1200 +required_jobs: "^(ci|CI).*" # Git user attached to commits for release pull requests. git_user_name: Ariel Valentin git_user_email: ariel@arielvalentin.com From 626d9b1f732b66e14a6c8b7b7b0f39b630ee9231 Mon Sep 17 00:00:00 2001 From: Ariel Valentin Date: Mon, 6 Nov 2023 20:51:00 -0600 Subject: [PATCH 2/7] chore: Fix httpx version --- .../httpx/lib/opentelemetry/instrumentation/httpx/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instrumentation/httpx/lib/opentelemetry/instrumentation/httpx/version.rb b/instrumentation/httpx/lib/opentelemetry/instrumentation/httpx/version.rb index b05472d1e..204eefefa 100644 --- a/instrumentation/httpx/lib/opentelemetry/instrumentation/httpx/version.rb +++ b/instrumentation/httpx/lib/opentelemetry/instrumentation/httpx/version.rb @@ -7,7 +7,7 @@ module OpenTelemetry module Instrumentation module HTTPX - VERSION = '0.1.0' + VERSION = '0.0.0' end end end From 7f92d2418c71fc33c6ed49b64114c99eb348b903 Mon Sep 17 00:00:00 2001 From: Ariel Valentin Date: Mon, 6 Nov 2023 21:57:32 -0600 Subject: [PATCH 3/7] chore: bump toys --- .github/workflows/release-hook-on-closed.yml | 2 +- .github/workflows/release-hook-on-push.yml | 2 +- .github/workflows/release-perform.yml | 2 +- .github/workflows/release-request.yml | 2 +- .github/workflows/release-retry.yml | 2 +- .toys/.toys.rb | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/release-hook-on-closed.yml b/.github/workflows/release-hook-on-closed.yml index 7b00cdc54..6a80f4146 100644 --- a/.github/workflows/release-hook-on-closed.yml +++ b/.github/workflows/release-hook-on-closed.yml @@ -18,7 +18,7 @@ jobs: - name: Checkout repo uses: actions/checkout@v4 - name: Install Toys - run: "gem install --no-document toys -v 0.15.1" + run: "gem install --no-document toys -v 0.15.3" - name: Process release request env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release-hook-on-push.yml b/.github/workflows/release-hook-on-push.yml index 23ed4912c..d3a85043d 100644 --- a/.github/workflows/release-hook-on-push.yml +++ b/.github/workflows/release-hook-on-push.yml @@ -19,7 +19,7 @@ jobs: - name: Checkout repo uses: actions/checkout@v4 - name: Install Toys - run: "gem install --no-document toys -v 0.15.1" + run: "gem install --no-document toys -v 0.15.3" - name: Update open releases env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release-perform.yml b/.github/workflows/release-perform.yml index 105ae542c..60ebeaee5 100644 --- a/.github/workflows/release-perform.yml +++ b/.github/workflows/release-perform.yml @@ -28,7 +28,7 @@ jobs: - name: Checkout repo uses: actions/checkout@v4 - name: Install Toys - run: "gem install --no-document toys -v 0.15.1" + run: "gem install --no-document toys -v 0.15.3" - name: Perform release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release-request.yml b/.github/workflows/release-request.yml index f0ab20957..00997a9ba 100644 --- a/.github/workflows/release-request.yml +++ b/.github/workflows/release-request.yml @@ -22,7 +22,7 @@ jobs: - name: Checkout repo uses: actions/checkout@v4 - name: Install Toys - run: "gem install --no-document toys -v 0.15.1" + run: "gem install --no-document toys -v 0.15.3" - name: Open release pull request env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release-retry.yml b/.github/workflows/release-retry.yml index 7b8d42afe..381987aec 100644 --- a/.github/workflows/release-retry.yml +++ b/.github/workflows/release-retry.yml @@ -25,7 +25,7 @@ jobs: - name: Checkout repo uses: actions/checkout@v4 - name: Install Toys - run: "gem install --no-document toys -v 0.15.1" + run: "gem install --no-document toys -v 0.15.3" - name: Retry release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.toys/.toys.rb b/.toys/.toys.rb index 11f265b72..d723a7a4a 100644 --- a/.toys/.toys.rb +++ b/.toys/.toys.rb @@ -1,7 +1,7 @@ -toys_version! "0.15.1" +toys_version! "0.15.3" load_git remote: "https://github.com/dazuma/toys.git", path: ".toys/release", as: "release", - commit: "toys/v0.15.1", + commit: "toys/v0.15.3", update: 3600 From 7ba26160ec240f27bd763507ab1c3664eeb2107e Mon Sep 17 00:00:00 2001 From: Ariel Valentin Date: Mon, 6 Nov 2023 22:49:17 -0600 Subject: [PATCH 4/7] release: Release opentelemetry-instrumentation-httpx 0.1.0 (initial release) (#713) * release: Release opentelemetry-instrumentation-httpx 0.1.0 (initial release) * Update instrumentation/httpx/CHANGELOG.md --- instrumentation/httpx/CHANGELOG.md | 4 ++++ .../httpx/lib/opentelemetry/instrumentation/httpx/version.rb | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/instrumentation/httpx/CHANGELOG.md b/instrumentation/httpx/CHANGELOG.md index 47ddf384d..8f13d82f7 100644 --- a/instrumentation/httpx/CHANGELOG.md +++ b/instrumentation/httpx/CHANGELOG.md @@ -1 +1,5 @@ # Release History: opentelemetry-instrumentation-httpx + +### v0.1.0 / 2023-11-06 + +* Initial Release. diff --git a/instrumentation/httpx/lib/opentelemetry/instrumentation/httpx/version.rb b/instrumentation/httpx/lib/opentelemetry/instrumentation/httpx/version.rb index 204eefefa..b05472d1e 100644 --- a/instrumentation/httpx/lib/opentelemetry/instrumentation/httpx/version.rb +++ b/instrumentation/httpx/lib/opentelemetry/instrumentation/httpx/version.rb @@ -7,7 +7,7 @@ module OpenTelemetry module Instrumentation module HTTPX - VERSION = '0.0.0' + VERSION = '0.1.0' end end end From 3f44472230964017d1831a47ea0661dc92d55909 Mon Sep 17 00:00:00 2001 From: Ariel Valentin Date: Wed, 8 Nov 2023 19:51:51 -0600 Subject: [PATCH 5/7] feat!: Drop Rails 6.0 EOL (#680) * feat!: Drop Rails 6.0 EOL 6.0 is no longer receiving maintenance, security, or feature updates as of 01 Jun 2023 Users who want to continue instrumentating Rails applications should pin to earlier versions of the instrumentation. * squash: Fix test * squash: gem version object instead of string * Update README.md Co-authored-by: Kayla Reopelle (she/her) <87386821+kaylareopelle@users.noreply.github.com> * Update instrumentation/README.md Co-authored-by: Kayla Reopelle (she/her) <87386821+kaylareopelle@users.noreply.github.com> --------- Co-authored-by: Kayla Reopelle (she/her) <87386821+kaylareopelle@users.noreply.github.com> --- README.md | 13 +++++++++++++ instrumentation/README.md | 9 +++++++++ instrumentation/action_pack/Appraisals | 4 ---- .../instrumentation/action_pack/instrumentation.rb | 2 +- ...pentelemetry-instrumentation-action_pack.gemspec | 2 +- .../action_pack/test/test_helpers/app_config.rb | 9 --------- instrumentation/action_view/Appraisals | 4 ---- .../instrumentation/action_view/instrumentation.rb | 2 +- ...pentelemetry-instrumentation-action_view.gemspec | 2 +- instrumentation/active_job/Appraisals | 2 +- .../instrumentation/active_job/instrumentation.rb | 2 +- ...opentelemetry-instrumentation-active_job.gemspec | 2 +- instrumentation/active_record/Appraisals | 4 ---- .../active_record/instrumentation.rb | 9 ++------- ...ntelemetry-instrumentation-active_record.gemspec | 2 +- .../active_record/instrumentation_test.rb | 12 ------------ instrumentation/active_support/Appraisals | 4 ---- .../active_support/instrumentation.rb | 10 ++++++++++ ...telemetry-instrumentation-active_support.gemspec | 2 +- instrumentation/rails/Appraisals | 4 ---- instrumentation/rails/README.md | 4 ++-- .../instrumentation/rails/instrumentation.rb | 4 ++-- .../opentelemetry-instrumentation-rails.gemspec | 2 +- .../test/instrumentation/test_helpers/app_config.rb | 9 --------- 24 files changed, 48 insertions(+), 71 deletions(-) diff --git a/README.md b/README.md index 67216b2b9..d7de85310 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,19 @@ This repository also contains libraries to aid with interoperablity with vendor OpenTelemetry Ruby follows the [versioning and stability document][otel-versioning] in the OpenTelemetry specification. Notably, we adhere to the outlined version numbering exception, which states that experimental signals may have a `0.x` version number. +### Library Compatability + +This project is managed on a volunteer basis and therefore we have limited capacity to support compatability with unmaintained or EOL libraries. + +We will regularly review the instrumentations to drop compatability for any versions of Ruby or gems that reach EOL or no longer receive regular maintenance. + +Should you need instrumentation for _older_ versions of a library then you must pin to a specific version of the instrumentation that supports it, +however, you will no longer receive any updates for the instrumentation from this repository. + +> When a release series is no longer supported, it's your own responsibility to deal with bugs and security issues. We may provide backports of the fixes and publish them to git, however there will be no new versions released. If you are not comfortable maintaining your own versions, you should upgrade to a supported version. + +Consult instrumentation gem's README file and gemspec for details about library compatability. + ### Releases This repository was extracted from the [OpenTelemetry Ruby repository][otel-ruby]. Versions of libraries contained in this repo released prior to 2022-06-13 are available on the [OpenTelemetry Ruby Releases][otel-ruby-releases] page. Newer versions are available [here][otel-ruby-contrib-releases] diff --git a/instrumentation/README.md b/instrumentation/README.md index 1ebae6a59..a20b8b1f9 100644 --- a/instrumentation/README.md +++ b/instrumentation/README.md @@ -37,6 +37,15 @@ Instrumentation-specific documentation can be found in each subdirectory's `READ You also have the option of installing all of the instrumentation libraries by installing `opentelemetry-instrumentation-all`. See that gem's [README](https://github.com/open-telemetry/opentelemetry-ruby-contrib/tree/main/instrumentation/all) for more. +### Maintenance and Version Compatability + +We are a community of volunteers who do our best to provide our users with up to date support for instrumentations, +however we have limited capacity and are unable to support compatability with EOL or unmaintained libraries. + +Should you need to instrument an _older_ version of a library you will have to ensure to pin to an instrumentation version that is compatible with that library. + +Please review the individual instrumentation READMEs for more information about version compatability. + ## How can I get involved? The source for all OpenTelemetry Ruby instrumentation gems is [on github](https://github.com/open-telemetry/opentelemetry-ruby-contrib/tree/main/instrumentation). diff --git a/instrumentation/action_pack/Appraisals b/instrumentation/action_pack/Appraisals index 895a185d4..018ce75b2 100644 --- a/instrumentation/action_pack/Appraisals +++ b/instrumentation/action_pack/Appraisals @@ -4,10 +4,6 @@ # # SPDX-License-Identifier: Apache-2.0 -appraise 'rails-6.0' do - gem 'rails', '~> 6.0.0' -end - appraise 'rails-6.1' do gem 'rails', '~> 6.1.0' end diff --git a/instrumentation/action_pack/lib/opentelemetry/instrumentation/action_pack/instrumentation.rb b/instrumentation/action_pack/lib/opentelemetry/instrumentation/action_pack/instrumentation.rb index 52252ff24..4b547a7e9 100644 --- a/instrumentation/action_pack/lib/opentelemetry/instrumentation/action_pack/instrumentation.rb +++ b/instrumentation/action_pack/lib/opentelemetry/instrumentation/action_pack/instrumentation.rb @@ -9,7 +9,7 @@ module Instrumentation module ActionPack # The Instrumentation class contains logic to detect and install the ActionPack instrumentation class Instrumentation < OpenTelemetry::Instrumentation::Base - MINIMUM_VERSION = Gem::Version.new('6.0.0') + MINIMUM_VERSION = Gem::Version.new('6.1.0') install do |_config| require_railtie diff --git a/instrumentation/action_pack/opentelemetry-instrumentation-action_pack.gemspec b/instrumentation/action_pack/opentelemetry-instrumentation-action_pack.gemspec index f12531d06..2e23f7fef 100644 --- a/instrumentation/action_pack/opentelemetry-instrumentation-action_pack.gemspec +++ b/instrumentation/action_pack/opentelemetry-instrumentation-action_pack.gemspec @@ -34,7 +34,7 @@ Gem::Specification.new do |spec| spec.add_development_dependency 'minitest', '~> 5.0' spec.add_development_dependency 'opentelemetry-sdk', '~> 1.1' spec.add_development_dependency 'opentelemetry-test-helpers', '~> 0.3' - spec.add_development_dependency 'rails', '>= 6' + spec.add_development_dependency 'rails', '>= 6.1' spec.add_development_dependency 'rake', '~> 13.0' spec.add_development_dependency 'rubocop', '~> 1.56.1' spec.add_development_dependency 'simplecov', '~> 0.17.1' diff --git a/instrumentation/action_pack/test/test_helpers/app_config.rb b/instrumentation/action_pack/test/test_helpers/app_config.rb index b62d198de..8874d61e2 100644 --- a/instrumentation/action_pack/test/test_helpers/app_config.rb +++ b/instrumentation/action_pack/test/test_helpers/app_config.rb @@ -28,8 +28,6 @@ def initialize_app(use_exceptions_app: false, remove_rack_tracer_middleware: fal new_app.config.filter_parameters = [:param_to_be_filtered] case Rails.version - when /^6\.0/ - apply_rails_6_0_configs(new_app) when /^6\.1/ apply_rails_6_1_configs(new_app) when /^7\./ @@ -73,13 +71,6 @@ def add_middlewares(application) ) end - def apply_rails_6_0_configs(application) - # Required in Rails 6 - application.config.hosts << 'example.org' - # Creates a lot of deprecation warnings on subsequent app initializations if not explicitly set. - application.config.action_view.finalize_compiled_template_methods = ActionView::Railtie::NULL_OPTION - end - def apply_rails_6_1_configs(application) # Required in Rails 6 application.config.hosts << 'example.org' diff --git a/instrumentation/action_view/Appraisals b/instrumentation/action_view/Appraisals index 895a185d4..018ce75b2 100644 --- a/instrumentation/action_view/Appraisals +++ b/instrumentation/action_view/Appraisals @@ -4,10 +4,6 @@ # # SPDX-License-Identifier: Apache-2.0 -appraise 'rails-6.0' do - gem 'rails', '~> 6.0.0' -end - appraise 'rails-6.1' do gem 'rails', '~> 6.1.0' end diff --git a/instrumentation/action_view/lib/opentelemetry/instrumentation/action_view/instrumentation.rb b/instrumentation/action_view/lib/opentelemetry/instrumentation/action_view/instrumentation.rb index fe5b74781..9087d4475 100644 --- a/instrumentation/action_view/lib/opentelemetry/instrumentation/action_view/instrumentation.rb +++ b/instrumentation/action_view/lib/opentelemetry/instrumentation/action_view/instrumentation.rb @@ -9,7 +9,7 @@ module Instrumentation module ActionView # The Instrumentation class contains logic to detect and install the ActionView instrumentation class Instrumentation < OpenTelemetry::Instrumentation::Base - MINIMUM_VERSION = Gem::Version.new('6.0.0') + MINIMUM_VERSION = Gem::Version.new('6.1.0') install do |_config| require_dependencies end diff --git a/instrumentation/action_view/opentelemetry-instrumentation-action_view.gemspec b/instrumentation/action_view/opentelemetry-instrumentation-action_view.gemspec index 26502b714..fe22f24db 100644 --- a/instrumentation/action_view/opentelemetry-instrumentation-action_view.gemspec +++ b/instrumentation/action_view/opentelemetry-instrumentation-action_view.gemspec @@ -34,7 +34,7 @@ Gem::Specification.new do |spec| spec.add_development_dependency 'minitest', '~> 5.0' spec.add_development_dependency 'opentelemetry-sdk', '~> 1.1' spec.add_development_dependency 'opentelemetry-test-helpers', '~> 0.3' - spec.add_development_dependency 'rails', '>= 6' + spec.add_development_dependency 'rails', '>= 6.1' spec.add_development_dependency 'rake', '~> 13.0' spec.add_development_dependency 'rubocop', '~> 1.56.1' spec.add_development_dependency 'simplecov', '~> 0.17.1' diff --git a/instrumentation/active_job/Appraisals b/instrumentation/active_job/Appraisals index a318df014..05429cd62 100644 --- a/instrumentation/active_job/Appraisals +++ b/instrumentation/active_job/Appraisals @@ -4,7 +4,7 @@ # # SPDX-License-Identifier: Apache-2.0 -%w[6.0.0 6.1.0 7.0.0 7.1.0].each do |version| +%w[6.1.0 7.0.0 7.1.0].each do |version| appraise "activejob-#{version}" do gem 'activejob', "~> #{version}" end diff --git a/instrumentation/active_job/lib/opentelemetry/instrumentation/active_job/instrumentation.rb b/instrumentation/active_job/lib/opentelemetry/instrumentation/active_job/instrumentation.rb index 9178e51ce..20f3cac57 100644 --- a/instrumentation/active_job/lib/opentelemetry/instrumentation/active_job/instrumentation.rb +++ b/instrumentation/active_job/lib/opentelemetry/instrumentation/active_job/instrumentation.rb @@ -9,7 +9,7 @@ module Instrumentation module ActiveJob # The Instrumentation class contains logic to detect and install the ActiveJob instrumentation class Instrumentation < OpenTelemetry::Instrumentation::Base - MINIMUM_VERSION = Gem::Version.new('6.0.0') + MINIMUM_VERSION = Gem::Version.new('6.1.0') install do |_config| require_dependencies diff --git a/instrumentation/active_job/opentelemetry-instrumentation-active_job.gemspec b/instrumentation/active_job/opentelemetry-instrumentation-active_job.gemspec index 2e0ab8892..0699b8621 100644 --- a/instrumentation/active_job/opentelemetry-instrumentation-active_job.gemspec +++ b/instrumentation/active_job/opentelemetry-instrumentation-active_job.gemspec @@ -28,7 +28,7 @@ Gem::Specification.new do |spec| spec.add_dependency 'opentelemetry-api', '~> 1.0' spec.add_dependency 'opentelemetry-instrumentation-base', '~> 0.22.1' - spec.add_development_dependency 'activejob', '>= 6.0.0' + spec.add_development_dependency 'activejob', '>= 6.1' spec.add_development_dependency 'appraisal', '~> 2.5' spec.add_development_dependency 'bundler', '~> 2.4' spec.add_development_dependency 'minitest', '~> 5.0' diff --git a/instrumentation/active_record/Appraisals b/instrumentation/active_record/Appraisals index 75952e9f4..36f3effee 100644 --- a/instrumentation/active_record/Appraisals +++ b/instrumentation/active_record/Appraisals @@ -4,10 +4,6 @@ # # SPDX-License-Identifier: Apache-2.0 -appraise 'activerecord-6.0' do - gem 'activerecord', '~> 6.0.0' -end - appraise 'activerecord-6.1' do gem 'activerecord', '~> 6.1.0' end diff --git a/instrumentation/active_record/lib/opentelemetry/instrumentation/active_record/instrumentation.rb b/instrumentation/active_record/lib/opentelemetry/instrumentation/active_record/instrumentation.rb index 423d6b3f5..fb8b2f19f 100644 --- a/instrumentation/active_record/lib/opentelemetry/instrumentation/active_record/instrumentation.rb +++ b/instrumentation/active_record/lib/opentelemetry/instrumentation/active_record/instrumentation.rb @@ -9,8 +9,7 @@ module Instrumentation module ActiveRecord # The Instrumentation class contains logic to detect and install the ActiveRecord instrumentation class Instrumentation < OpenTelemetry::Instrumentation::Base - MINIMUM_VERSION = Gem::Version.new('6.0.0') - MAX_MAJOR_VERSION = 7 + MINIMUM_VERSION = Gem::Version.new('6.1.0') install do |_config| require_dependencies @@ -22,11 +21,7 @@ class Instrumentation < OpenTelemetry::Instrumentation::Base end compatible do - # We know that releases after MAX_MAJOR_VERSION are unstable so we - # check the major version number of the gem installed to make sure we - # do not install on a pre-release or full release of the latest - # if it exceeds the MAX_MAJOR_VERSION version. - gem_version >= MINIMUM_VERSION && gem_version.segments[0] <= MAX_MAJOR_VERSION + gem_version >= MINIMUM_VERSION end private diff --git a/instrumentation/active_record/opentelemetry-instrumentation-active_record.gemspec b/instrumentation/active_record/opentelemetry-instrumentation-active_record.gemspec index b9351875f..dcfa69779 100644 --- a/instrumentation/active_record/opentelemetry-instrumentation-active_record.gemspec +++ b/instrumentation/active_record/opentelemetry-instrumentation-active_record.gemspec @@ -29,7 +29,7 @@ Gem::Specification.new do |spec| spec.add_dependency 'opentelemetry-instrumentation-base', '~> 0.22.1' spec.add_dependency 'ruby2_keywords' - spec.add_development_dependency 'activerecord' + spec.add_development_dependency 'activerecord', '>= 6.1' spec.add_development_dependency 'appraisal', '~> 2.5' spec.add_development_dependency 'bundler', '~> 2.4' spec.add_development_dependency 'minitest', '~> 5.0' diff --git a/instrumentation/active_record/test/instrumentation/active_record/instrumentation_test.rb b/instrumentation/active_record/test/instrumentation/active_record/instrumentation_test.rb index 546ac39a9..95848825e 100644 --- a/instrumentation/active_record/test/instrumentation/active_record/instrumentation_test.rb +++ b/instrumentation/active_record/test/instrumentation/active_record/instrumentation_test.rb @@ -28,18 +28,6 @@ end end - it 'when a version above the maximum supported gem version is installed' do - ActiveRecord.stub(:version, Gem::Version.new('8.0.0')) do - _(instrumentation.compatible?).must_equal false - end - end - - it 'it treats pre releases as being equivalent to a full release' do - ActiveRecord.stub(:version, Gem::Version.new('8.0.0.alpha')) do - _(instrumentation.compatible?).must_equal false - end - end - it 'when supported gem version installed' do _(instrumentation.compatible?).must_equal true end diff --git a/instrumentation/active_support/Appraisals b/instrumentation/active_support/Appraisals index aaad18a9c..086c10ee9 100644 --- a/instrumentation/active_support/Appraisals +++ b/instrumentation/active_support/Appraisals @@ -4,10 +4,6 @@ # # SPDX-License-Identifier: Apache-2.0 -appraise 'activesupport-6.0' do - gem 'activesupport', '~> 6.0.0' -end - appraise 'activesupport-6.1' do gem 'activesupport', '~> 6.1.0' end diff --git a/instrumentation/active_support/lib/opentelemetry/instrumentation/active_support/instrumentation.rb b/instrumentation/active_support/lib/opentelemetry/instrumentation/active_support/instrumentation.rb index f5d91e2d3..d10c3cbac 100644 --- a/instrumentation/active_support/lib/opentelemetry/instrumentation/active_support/instrumentation.rb +++ b/instrumentation/active_support/lib/opentelemetry/instrumentation/active_support/instrumentation.rb @@ -9,6 +9,8 @@ module Instrumentation module ActiveSupport # The Instrumentation class contains logic to detect and install the ActiveSupport instrumentation class Instrumentation < OpenTelemetry::Instrumentation::Base + MINIMUM_VERSION = Gem::Version.new('6.1.0') + install do |_config| require_dependencies end @@ -17,8 +19,16 @@ class Instrumentation < OpenTelemetry::Instrumentation::Base defined?(::ActiveSupport) end + compatible do + gem_version >= MINIMUM_VERSION + end + private + def gem_version + ::ActiveSupport.version + end + def require_dependencies require_relative 'span_subscriber' end diff --git a/instrumentation/active_support/opentelemetry-instrumentation-active_support.gemspec b/instrumentation/active_support/opentelemetry-instrumentation-active_support.gemspec index 6b6aaa7d3..f9fdb4027 100644 --- a/instrumentation/active_support/opentelemetry-instrumentation-active_support.gemspec +++ b/instrumentation/active_support/opentelemetry-instrumentation-active_support.gemspec @@ -36,7 +36,7 @@ Gem::Specification.new do |spec| spec.add_development_dependency 'opentelemetry-test-helpers', '~> 0.3' spec.add_development_dependency 'pry' spec.add_development_dependency 'pry-byebug' - spec.add_development_dependency 'rails', '>= 6' + spec.add_development_dependency 'rails', '>= 6.1' spec.add_development_dependency 'rake', '~> 13.0' spec.add_development_dependency 'rubocop', '~> 1.56.1' spec.add_development_dependency 'simplecov', '~> 0.17.1' diff --git a/instrumentation/rails/Appraisals b/instrumentation/rails/Appraisals index 895a185d4..018ce75b2 100644 --- a/instrumentation/rails/Appraisals +++ b/instrumentation/rails/Appraisals @@ -4,10 +4,6 @@ # # SPDX-License-Identifier: Apache-2.0 -appraise 'rails-6.0' do - gem 'rails', '~> 6.0.0' -end - appraise 'rails-6.1' do gem 'rails', '~> 6.1.0' end diff --git a/instrumentation/rails/README.md b/instrumentation/rails/README.md index aec56238f..330db609f 100644 --- a/instrumentation/rails/README.md +++ b/instrumentation/rails/README.md @@ -14,7 +14,7 @@ Or, if you use [bundler][bundler-home], include `opentelemetry-instrumentation-r ### Version Compatibility -EOL versions of Rails are not supported by the latest version of this instrumentation. If you are using an EOL version of Rails and need an earlier version of this instrumentation, then consider installing and pinning the compatible gem version, e.g.: +EOL versions of Rails are not supported by the latest version of this instrumentation. If you are using an EOL version of Rails and need an earlier version of this instrumentation, then consider installing and pinning the compatible gem version, e.g.: ```console gem opentelemetry-instrumentation-rails, "" @@ -23,7 +23,7 @@ gem opentelemetry-instrumentation-rails, "" | Rails Version | Instrumentation Version | | --- | --- | | `5.2` | `= 0.24.1` | -| `6.0` | `~> 0.24.1` | +| `6.0` | `= 0.28.0` | | `6.1` | `~> 0.24` | | `7.x` | `~> 0.24` | diff --git a/instrumentation/rails/lib/opentelemetry/instrumentation/rails/instrumentation.rb b/instrumentation/rails/lib/opentelemetry/instrumentation/rails/instrumentation.rb index c424dc58f..c928c0192 100644 --- a/instrumentation/rails/lib/opentelemetry/instrumentation/rails/instrumentation.rb +++ b/instrumentation/rails/lib/opentelemetry/instrumentation/rails/instrumentation.rb @@ -12,7 +12,7 @@ module Rails # The Instrumentation class contains logic to detect and install the Rails # instrumentation class Instrumentation < OpenTelemetry::Instrumentation::Base - MINIMUM_VERSION = Gem::Version.new('6.0.0') + MINIMUM_VERSION = Gem::Version.new('6.1.0') # This gem requires the instrumentantion gems for the different # components of Rails, as a result it does not have any explicit @@ -24,7 +24,7 @@ class Instrumentation < OpenTelemetry::Instrumentation::Base private def gem_version - ::ActionPack.version + ::Rails.gem_version end end end diff --git a/instrumentation/rails/opentelemetry-instrumentation-rails.gemspec b/instrumentation/rails/opentelemetry-instrumentation-rails.gemspec index c49f43e70..af60bd48f 100644 --- a/instrumentation/rails/opentelemetry-instrumentation-rails.gemspec +++ b/instrumentation/rails/opentelemetry-instrumentation-rails.gemspec @@ -39,7 +39,7 @@ Gem::Specification.new do |spec| spec.add_development_dependency 'opentelemetry-sdk', '~> 1.1' spec.add_development_dependency 'opentelemetry-test-helpers', '~> 0.3' spec.add_development_dependency 'rack-test', '~> 2.1.0' - spec.add_development_dependency 'rails', '>= 6' + spec.add_development_dependency 'rails', '>= 6.1' spec.add_development_dependency 'rake', '~> 13.0' spec.add_development_dependency 'rubocop', '~> 1.56.1' spec.add_development_dependency 'simplecov', '~> 0.22.0' diff --git a/instrumentation/rails/test/instrumentation/test_helpers/app_config.rb b/instrumentation/rails/test/instrumentation/test_helpers/app_config.rb index 1bb3fe564..3e8c23ee1 100644 --- a/instrumentation/rails/test/instrumentation/test_helpers/app_config.rb +++ b/instrumentation/rails/test/instrumentation/test_helpers/app_config.rb @@ -26,8 +26,6 @@ def initialize_app(use_exceptions_app: false, remove_rack_tracer_middleware: fal new_app.config.log_level = level case Rails.version - when /^6\.0/ - apply_rails_6_0_configs(new_app) when /^6\.1/ apply_rails_6_1_configs(new_app) when /^7\./ @@ -71,13 +69,6 @@ def add_middlewares(application) ) end - def apply_rails_6_0_configs(application) - # Required in Rails 6 - application.config.hosts << 'example.org' - # Creates a lot of deprecation warnings on subsequent app initializations if not explicitly set. - application.config.action_view.finalize_compiled_template_methods = ActionView::Railtie::NULL_OPTION - end - def apply_rails_6_1_configs(application) # Required in Rails 6 application.config.hosts << 'example.org' From c8e2f70c4d908dac23f80c32cb77fbb04a315c40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20=C5=A0im=C3=A1nek?= Date: Sat, 18 Nov 2023 01:52:52 +0100 Subject: [PATCH 6/7] Inline gemspec dev constraints with Appraisals. (#716) --- .../opentelemetry-instrumentation-concurrent_ruby.gemspec | 2 +- .../ethon/opentelemetry-instrumentation-ethon.gemspec | 2 +- .../faraday/opentelemetry-instrumentation-faraday.gemspec | 2 +- instrumentation/que/opentelemetry-instrumentation-que.gemspec | 2 +- .../redis/opentelemetry-instrumentation-redis.gemspec | 2 +- .../restclient/opentelemetry-instrumentation-restclient.gemspec | 2 +- .../sidekiq/opentelemetry-instrumentation-sidekiq.gemspec | 2 +- .../sinatra/opentelemetry-instrumentation-sinatra.gemspec | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/instrumentation/concurrent_ruby/opentelemetry-instrumentation-concurrent_ruby.gemspec b/instrumentation/concurrent_ruby/opentelemetry-instrumentation-concurrent_ruby.gemspec index d2cfb4b33..9b99f1e2a 100644 --- a/instrumentation/concurrent_ruby/opentelemetry-instrumentation-concurrent_ruby.gemspec +++ b/instrumentation/concurrent_ruby/opentelemetry-instrumentation-concurrent_ruby.gemspec @@ -30,7 +30,7 @@ Gem::Specification.new do |spec| spec.add_development_dependency 'appraisal', '~> 2.5' spec.add_development_dependency 'bundler', '~> 2.4' - spec.add_development_dependency 'concurrent-ruby', '~> 1.1.6' + spec.add_development_dependency 'concurrent-ruby', '~> 1.0' spec.add_development_dependency 'minitest', '~> 5.0' spec.add_development_dependency 'opentelemetry-sdk', '~> 1.1' spec.add_development_dependency 'opentelemetry-test-helpers', '~> 0.3' diff --git a/instrumentation/ethon/opentelemetry-instrumentation-ethon.gemspec b/instrumentation/ethon/opentelemetry-instrumentation-ethon.gemspec index e24672d52..ee41e5925 100644 --- a/instrumentation/ethon/opentelemetry-instrumentation-ethon.gemspec +++ b/instrumentation/ethon/opentelemetry-instrumentation-ethon.gemspec @@ -31,7 +31,7 @@ Gem::Specification.new do |spec| spec.add_development_dependency 'appraisal', '~> 2.5' spec.add_development_dependency 'bundler', '~> 2.4' - spec.add_development_dependency 'ethon', '~> 0.12.0' + spec.add_development_dependency 'ethon', '~> 0.11' spec.add_development_dependency 'minitest', '~> 5.0' spec.add_development_dependency 'opentelemetry-sdk', '~> 1.1' spec.add_development_dependency 'opentelemetry-test-helpers', '~> 0.3' diff --git a/instrumentation/faraday/opentelemetry-instrumentation-faraday.gemspec b/instrumentation/faraday/opentelemetry-instrumentation-faraday.gemspec index d89bcaf74..ac9527d5e 100644 --- a/instrumentation/faraday/opentelemetry-instrumentation-faraday.gemspec +++ b/instrumentation/faraday/opentelemetry-instrumentation-faraday.gemspec @@ -31,7 +31,7 @@ Gem::Specification.new do |spec| spec.add_development_dependency 'appraisal', '~> 2.5' spec.add_development_dependency 'bundler', '~> 2.4' - spec.add_development_dependency 'faraday', '~> 0.17.0' + spec.add_development_dependency 'faraday' spec.add_development_dependency 'minitest', '~> 5.0' spec.add_development_dependency 'opentelemetry-sdk', '~> 1.1' spec.add_development_dependency 'opentelemetry-test-helpers', '~> 0.3' diff --git a/instrumentation/que/opentelemetry-instrumentation-que.gemspec b/instrumentation/que/opentelemetry-instrumentation-que.gemspec index af9982566..603b863f0 100644 --- a/instrumentation/que/opentelemetry-instrumentation-que.gemspec +++ b/instrumentation/que/opentelemetry-instrumentation-que.gemspec @@ -36,7 +36,7 @@ Gem::Specification.new do |spec| spec.add_development_dependency 'opentelemetry-sdk', '~> 1.1' spec.add_development_dependency 'opentelemetry-test-helpers', '~> 0.3' spec.add_development_dependency 'pg', '~> 1.1' - spec.add_development_dependency 'que', '~> 1.2.0' + spec.add_development_dependency 'que' spec.add_development_dependency 'rake', '~> 13.0' spec.add_development_dependency 'rubocop', '~> 1.56.1' spec.add_development_dependency 'simplecov', '~> 0.17.1' diff --git a/instrumentation/redis/opentelemetry-instrumentation-redis.gemspec b/instrumentation/redis/opentelemetry-instrumentation-redis.gemspec index 3b8b39298..2d319abec 100644 --- a/instrumentation/redis/opentelemetry-instrumentation-redis.gemspec +++ b/instrumentation/redis/opentelemetry-instrumentation-redis.gemspec @@ -34,7 +34,7 @@ Gem::Specification.new do |spec| spec.add_development_dependency 'minitest', '~> 5.0' spec.add_development_dependency 'opentelemetry-sdk', '~> 1.1' spec.add_development_dependency 'opentelemetry-test-helpers', '~> 0.3' - spec.add_development_dependency 'redis', '~> 4.1.0' + spec.add_development_dependency 'redis', '~> 4.1' spec.add_development_dependency 'redis-client', '~> 0.7' spec.add_development_dependency 'rubocop', '~> 1.56.1' spec.add_development_dependency 'simplecov', '~> 0.17.1' diff --git a/instrumentation/restclient/opentelemetry-instrumentation-restclient.gemspec b/instrumentation/restclient/opentelemetry-instrumentation-restclient.gemspec index 42aaaa0fe..f3ab560f8 100644 --- a/instrumentation/restclient/opentelemetry-instrumentation-restclient.gemspec +++ b/instrumentation/restclient/opentelemetry-instrumentation-restclient.gemspec @@ -34,7 +34,7 @@ Gem::Specification.new do |spec| spec.add_development_dependency 'minitest', '~> 5.0' spec.add_development_dependency 'opentelemetry-sdk', '~> 1.1' spec.add_development_dependency 'opentelemetry-test-helpers', '~> 0.3' - spec.add_development_dependency 'rest-client', '~> 2.1.0' + spec.add_development_dependency 'rest-client', '~> 2.0' spec.add_development_dependency 'rubocop', '~> 1.56.1' spec.add_development_dependency 'simplecov', '~> 0.17.1' spec.add_development_dependency 'webmock', '~> 3.19' diff --git a/instrumentation/sidekiq/opentelemetry-instrumentation-sidekiq.gemspec b/instrumentation/sidekiq/opentelemetry-instrumentation-sidekiq.gemspec index 009da600c..40c5dce8e 100644 --- a/instrumentation/sidekiq/opentelemetry-instrumentation-sidekiq.gemspec +++ b/instrumentation/sidekiq/opentelemetry-instrumentation-sidekiq.gemspec @@ -37,7 +37,7 @@ Gem::Specification.new do |spec| spec.add_development_dependency 'opentelemetry-test-helpers', '~> 0.3' spec.add_development_dependency 'rspec-mocks' spec.add_development_dependency 'rubocop', '~> 1.56.1' - spec.add_development_dependency 'sidekiq', '~> 5.2.0' + spec.add_development_dependency 'sidekiq' spec.add_development_dependency 'simplecov', '~> 0.17.1' spec.add_development_dependency 'yard', '~> 0.9' diff --git a/instrumentation/sinatra/opentelemetry-instrumentation-sinatra.gemspec b/instrumentation/sinatra/opentelemetry-instrumentation-sinatra.gemspec index 3bc862704..8073e3a7c 100644 --- a/instrumentation/sinatra/opentelemetry-instrumentation-sinatra.gemspec +++ b/instrumentation/sinatra/opentelemetry-instrumentation-sinatra.gemspec @@ -38,7 +38,7 @@ Gem::Specification.new do |spec| spec.add_development_dependency 'rack-test', '~> 1.1.0' spec.add_development_dependency 'rubocop', '~> 1.56.1' spec.add_development_dependency 'simplecov', '~> 0.17.1' - spec.add_development_dependency 'sinatra', '~> 2.0.7' + spec.add_development_dependency 'sinatra' spec.add_development_dependency 'webmock', '~> 3.19' spec.add_development_dependency 'yard', '~> 0.9' From 02799c87f9bc9fb8af4ee90b2d704f1b213c891f Mon Sep 17 00:00:00 2001 From: Zachery Hostens Date: Sun, 19 Nov 2023 11:17:09 -0600 Subject: [PATCH 7/7] Removal Sinatra 1.x Appraisal (#715) fix: Removal Sinatra 1.x Appraisal Rack 1.x is not directly supported anymore. Sinatra 1.x in turn "is not". Removal appraisal and add a compatibility note to both Sinatra and Rack for proper instrumentation version usage. Co-authored-by: Ariel Valentin --- instrumentation/rack/README.md | 13 +++++++++++++ instrumentation/sinatra/Appraisals | 4 ---- instrumentation/sinatra/README.md | 14 ++++++++++++++ 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/instrumentation/rack/README.md b/instrumentation/rack/README.md index e63fc02bc..f154e504f 100644 --- a/instrumentation/rack/README.md +++ b/instrumentation/rack/README.md @@ -12,6 +12,19 @@ gem install opentelemetry-instrumentation-rack Or, if you use [bundler][bundler-home], include `opentelemetry-instrumentation-rack` in your `Gemfile`. +### Version Compatibility + +Older versions of Rack are not supported by the latest version of this instrumentation. If you are using an older version of Rack and need an earlier version of this instrumentation, then consider installing and pinning the compatible gem version, e.g.: + +```console +gem opentelemetry-instrumentation-rack, "" +``` + +| Rack Version | Instrumentation Version | +| ------------ | ----------------------- | +| `< 2.0` | `= 0.22.1` | +| `>= 2.0` | `~> 0.23` | + ## Usage To use the instrumentation, call `use` with the name of the instrumentation: diff --git a/instrumentation/sinatra/Appraisals b/instrumentation/sinatra/Appraisals index 77bc21d6f..f4ebf5e8a 100644 --- a/instrumentation/sinatra/Appraisals +++ b/instrumentation/sinatra/Appraisals @@ -11,7 +11,3 @@ end appraise 'sinatra-2.x' do gem 'sinatra', '~> 2.1' end - -appraise 'sinatra-1.x' do - gem 'sinatra', '~> 1.4' -end diff --git a/instrumentation/sinatra/README.md b/instrumentation/sinatra/README.md index 69a77984a..ddbad1f95 100644 --- a/instrumentation/sinatra/README.md +++ b/instrumentation/sinatra/README.md @@ -10,8 +10,22 @@ Install the gem using: gem install opentelemetry-instrumentation-sinatra ``` + Or, if you use [bundler][bundler-home], include `opentelemetry-instrumentation-sinatra` to your `Gemfile`. +### Version Compatibility + +Older versions of Sinatra depend on older version of Rack, which are not supported by the latest version of Rack instrumentation. If you are using an older version of Sinatra and need an earlier version of Rack instrumentation, then consider installing and pinning the compatible gem version, e.g.: + +```console +gem opentelemetry-instrumentation-rack, "" +``` + +| Sinatra Version | Rack Instrumentation Version | +| --------------- | ---------------------------- | +| `< 2.0` | `= 0.22.1` | +| `>= 2.0` | `~> 0.22` | + ## Usage To install the instrumentation, add the gem to your Gemfile: