28 lines
649 B
Ruby
28 lines
649 B
Ruby
# 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
|