Sha256: bb760e0ca70aabd691c5646cf54d9ea965376f9d0417ed72d6769bc17575cf5f

Contents?: true

Size: 649 Bytes

Versions: 96

Compression:

Stored size: 649 Bytes

Contents

# frozen_string_literal: true

module Mutant
  # Require highjack
  module RequireHighjack

    # Install require callback
    #
    # @param [Module] target
    # @param [#call] callback
    #
    # @return [#call]
    #   the original implementation on singleton
    def self.call(target, callback)
      target.public_method(:require).tap do
        target.module_eval do
          undef_method(:require)
          define_method(:require, &callback)
          class << self
            undef_method(:require)
          end
          define_singleton_method(:require, &callback)
        end
      end
    end

  end # RequireHighjack
end # Mutant

Version data entries

96 entries across 96 versions & 1 rubygems

Version Path
mutant-0.12.4 lib/mutant/require_highjack.rb
mutant-0.12.3 lib/mutant/require_highjack.rb
mutant-0.12.2 lib/mutant/require_highjack.rb
mutant-0.12.0 lib/mutant/require_highjack.rb
mutant-0.11.34 lib/mutant/require_highjack.rb
mutant-0.11.33 lib/mutant/require_highjack.rb
mutant-0.11.32 lib/mutant/require_highjack.rb
mutant-0.11.31 lib/mutant/require_highjack.rb
mutant-0.11.30 lib/mutant/require_highjack.rb
mutant-0.11.29 lib/mutant/require_highjack.rb
mutant-0.11.28 lib/mutant/require_highjack.rb
mutant-0.11.27 lib/mutant/require_highjack.rb
mutant-0.11.26 lib/mutant/require_highjack.rb
mutant-0.11.25 lib/mutant/require_highjack.rb
mutant-0.11.24 lib/mutant/require_highjack.rb
mutant-0.11.23 lib/mutant/require_highjack.rb
mutant-0.11.22 lib/mutant/require_highjack.rb
mutant-0.11.21 lib/mutant/require_highjack.rb
mutant-0.11.20 lib/mutant/require_highjack.rb
mutant-0.11.19 lib/mutant/require_highjack.rb