# module Gem::Deprecate

### Public Class Methods

rubygems_deprecate (name, replacement=:none)
Source

    # File lib/rubygems/deprecate.rb, line 129
    def rubygems_deprecate(name, replacement=:none)
      class_eval do
        old = "_deprecated_#{name}"
        alias_method old, name
        define_method name do |*args, &block|
          klass = is_a? Module
          target = klass ? "#{self}." : "#{self.class}#"
          msg = [
            "NOTE: #{target}#{name} is deprecated",
            replacement == :none ? " with no replacement" : "; use #{replacement} instead",
            ". It will be removed in Rubygems #{Gem::Deprecate.next_rubygems_major_version}",
            "\n#{target}#{name} called from #{Gem.location_of_caller.join(":")}",
          ]
          warn "#{msg.join}." unless Gem::Deprecate.skip
          send old, *args, &block
        end
        ruby2_keywords name if respond_to?(:ruby2_keywords, true)
      end
    end

Simple deprecation method that deprecates `name` by wrapping it up in a dummy method. It warns on each call to the dummy method telling the user of `repl` (unless `repl` is :none) and the Rubygems version that it is planned to go away.

rubygems_deprecate_command (version = Gem::Deprecate.next_rubygems_major_version)
Source

    # File lib/rubygems/deprecate.rb, line 150
    def rubygems_deprecate_command(version = Gem::Deprecate.next_rubygems_major_version)
      class_eval do
        define_method "deprecated?" do
          true
        end

        define_method "deprecation_warning" do
          msg = [
            "#{command} command is deprecated",
            ". It will be removed in Rubygems #{version}.\n",
          ]

          alert_warning msg.join.to_s unless Gem::Deprecate.skip
        end
      end
    end

Deprecation method to deprecate Rubygems commands

skip_during () { || ... }
Source

    # File lib/rubygems/deprecate.rb, line 85
    def skip_during
      original = Gem::Deprecate.skip
      Gem::Deprecate.skip = true
      yield
    ensure
      Gem::Deprecate.skip = original
    end

Temporarily turn off warnings. Intended for tests only.

### Public Instance Methods

deprecate (name, repl, year, month)
Source

    # File lib/rubygems/deprecate.rb, line 103
    def deprecate(name, repl, year, month)
      class_eval do
        old = "_deprecated_#{name}"
        alias_method old, name
        define_method name do |*args, &block|
          klass = is_a? Module
          target = klass ? "#{self}." : "#{self.class}#"
          msg = [
            "NOTE: #{target}#{name} is deprecated",
            repl == :none ? " with no replacement" : "; use #{repl} instead",
            format(". It will be removed on or after %4d-%02d.", year, month),
            "\n#{target}#{name} called from #{Gem.location_of_caller.join(":")}",
          ]
          warn "#{msg.join}." unless Gem::Deprecate.skip
          send old, *args, &block
        end
        ruby2_keywords name if respond_to?(:ruby2_keywords, true)
      end
    end

Simple deprecation method that deprecates `name` by wrapping it up in a dummy method. It warns on each call to the dummy method telling the user of `repl` (unless `repl` is :none) and the year/month that it is planned to go away.

### Private Instance Methods

rubygems_deprecate (name, replacement=:none)
Source

    # File lib/rubygems/deprecate.rb, line 129
    def rubygems_deprecate(name, replacement=:none)
      class_eval do
        old = "_deprecated_#{name}"
        alias_method old, name
        define_method name do |*args, &block|
          klass = is_a? Module
          target = klass ? "#{self}." : "#{self.class}#"
          msg = [
            "NOTE: #{target}#{name} is deprecated",
            replacement == :none ? " with no replacement" : "; use #{replacement} instead",
            ". It will be removed in Rubygems #{Gem::Deprecate.next_rubygems_major_version}",
            "\n#{target}#{name} called from #{Gem.location_of_caller.join(":")}",
          ]
          warn "#{msg.join}." unless Gem::Deprecate.skip
          send old, *args, &block
        end
        ruby2_keywords name if respond_to?(:ruby2_keywords, true)
      end
    end

Simple deprecation method that deprecates `name` by wrapping it up in a dummy method. It warns on each call to the dummy method telling the user of `repl` (unless `repl` is :none) and the Rubygems version that it is planned to go away.

rubygems_deprecate_command (version = Gem::Deprecate.next_rubygems_major_version)
Source

    # File lib/rubygems/deprecate.rb, line 150
    def rubygems_deprecate_command(version = Gem::Deprecate.next_rubygems_major_version)
      class_eval do
        define_method "deprecated?" do
          true
        end

        define_method "deprecation_warning" do
          msg = [
            "#{command} command is deprecated",
            ". It will be removed in Rubygems #{version}.\n",
          ]

          alert_warning msg.join.to_s unless Gem::Deprecate.skip
        end
      end
    end

Deprecation method to deprecate Rubygems commands

skip_during () { || ... }
Source

    # File lib/rubygems/deprecate.rb, line 85
    def skip_during
      original = Gem::Deprecate.skip
      Gem::Deprecate.skip = true
      yield
    ensure
      Gem::Deprecate.skip = original
    end

Temporarily turn off warnings. Intended for tests only.