Module: ConcernsOnRails::Controllers::Deprecatable::ClassMethods
- Defined in:
- lib/concerns_on_rails/controllers/deprecatable.rb
Instance Method Summary collapse
-
#deprecate_actions(*actions, deprecated_at: nil, sunset_at: nil, link: nil, successor: nil, after_sunset: :headers, header_format: :rfc9745, notify: nil) ⇒ Object
Declare a deprecation rule.
Instance Method Details
#deprecate_actions(*actions, deprecated_at: nil, sunset_at: nil, link: nil, successor: nil, after_sunset: :headers, header_format: :rfc9745, notify: nil) ⇒ Object
Declare a deprecation rule. No positional actions = catch-all for the whole controller. Repeatable; rules accumulate (reassigned, never mutated, so subclasses inherit) and the LAST one matching the current action wins.
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/concerns_on_rails/controllers/deprecatable.rb', line 76 def deprecate_actions(*actions, deprecated_at: nil, sunset_at: nil, link: nil, successor: nil, after_sunset: :headers, header_format: :rfc9745, notify: nil) actions = actions.flatten.map(&:to_s) after_sunset = after_sunset.to_sym header_format = header_format.to_sym deprecated_time = parse_deprecation_time(deprecated_at) sunset_time = sunset_at.nil? ? nil : parse_deprecation_time(sunset_at) validate_deprecate_actions!(deprecated_at: deprecated_at, deprecated_time: deprecated_time, sunset_at: sunset_at, sunset_time: sunset_time, link: link, successor: successor, after_sunset: after_sunset, notify: notify) unless VALID_HEADER_FORMATS.include?(header_format) raise ArgumentError, "#{LABEL}: :header_format must be one of #{VALID_HEADER_FORMATS.join(', ')}" end rule = { actions: actions, deprecated_at: deprecated_time, sunset_at: sunset_time, link: link, successor: successor, after_sunset: after_sunset, header_format: header_format, notify: notify } self.deprecatable_rules = deprecatable_rules + [rule] end |