Sha256: a3a8bf55a6b71e8efc264881185109530ff29988cf1c52341ed0817fa774591f
Contents?: true
Size: 1.14 KB
Versions: 15
Compression:
Stored size: 1.14 KB
Contents
module Mutant # Require highjack class RequireHighjack include Concord.new(:target, :callback) # Return original method # # @return [#call] # # @api private # attr_reader :original # Run block with highjacked require # # @return [self] # # @api private # def run infect yield self ensure disinfect end # Infect kernel with highjack # # @return [self] # # @api private # def infect callback = @callback @original = target.method(:require) target.module_eval do undef :require define_method(:require) do |logical_name| callback.call(logical_name) end module_function :require end end # Imperfectly disinfect kernel from highjack # # @return [self] # # @api private # def disinfect original = @original target.module_eval do undef :require define_method(:require) do |logical_name| original.call(logical_name) end module_function :require end end end # RequireHighjack end # Mutant
Version data entries
15 entries across 15 versions & 1 rubygems