Skip to content

Use native Rails support for deprecation warnings #175

@mark-dce

Description

@mark-dce

ISSUE

Back in the day, community members created a gem to ease managing deprecation warnings (see https://rubygems.org/gems/deprecation). Since that time Rails has incorporated direct support for managing deprecation warnings. Unfortunately the call signature has changed and we have a mix of old and new style calls throughout the codebase. When the wrong signature is called, we only get a very generic warning:

Warning using wrong call signature

DEPRECATION WARNING: You are using deprecated behavior which will be removed from the next major or minor release. 
          (called from <class:Work> at /app/samvera/hyrax-engine/app/models/hyrax/work.rb:98)

Warning using the correct call signature

DEPRECATION WARNING:  globally including `Hyrax::Schema(:core_metadata)` at the work level is deprecated.
          Add `include Hyrax::Schema(:core_metadata)` to your individual work classes or set
          up flexible metadata, then set `work_default_metadata = false` in config/hyrax.rb to remove this warning.
          (called from <class:Work> at /app/samvera/hyrax-engine/app/models/hyrax/work.rb:98)

Now that Rails provides the required functionality directly, we need to retire the dependency on the deprecation gem.

DETAILS

SCOPE OF WORK

Listing the dependencies from Hyrax (and presumably Hyku), a number of gems include the old dependency:

# bundle info deprecation
  * deprecation (1.1.0)
	Summary: Stand-alone deprecation library borrowed from ActiveSupport::Deprecation
	Homepage: http://github.com/cbeer/deprecation
	Path: /app/bundle/ruby/3.3.0/gems/deprecation-1.1.0
	Reverse Dependencies: 
		active-fedora (15.0.1) depends on deprecation (>= 0)
		blacklight (7.41.0) depends on deprecation (>= 0)
		blacklight-access_controls (6.1.0) depends on deprecation (~> 1.0)
		hydra-access-controls (13.2.0) depends on deprecation (~> 1.0)
		hydra-derivatives (4.0.0) depends on deprecation (>= 0)
		ldp (1.2.1) depends on deprecation (>= 0)
		qa (5.15.0) depends on deprecation (>= 0)
		riiif (2.8.0) depends on deprecation (>= 1.0.0)

ACCEPTANCE

  • Interim fix
    • Add a patch to hyrax to infer the correct method signature
    • Update call signatures in Hyrax to match rails expectations
    • Update call signatures in Hyku to match rails expectations
  • Remove the dependency and update call signatures in riiif
  • Remove the dependency and update call signatures in qa
  • Remove the dependency and update call signatures in ldp
  • Remove the dependency and update call signatures in hydra-derivatives
  • Remove the dependency and update call signatures in hydra-access-controls
  • Remove the dependency and update call signatures in blacklight-access-controls
  • Remove the dependency and update call signatures in active-fedora
  • Remove the dependency and update call signatures in blacklight
    NOTE: this is addressed in Blacklight 8.x - see Replace deprecation gem with ActiveSupport's deprecation behavior projectblacklight/blacklight#2793
  • Once all the dependencies are removed, and the old gem is no longer included in Hyrax by transitive dependency, remove the signature patch in Hyrax

Sub-issues

Metadata

Metadata

Assignees

Type

No type

Projects

Status

In Progress

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions