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'