Sha256: 70ed782e28710b0695c8eee5bcbfdd825b42e3a344e3f1f649c128e760f199b7
Contents?: true
Size: 1.14 KB
Versions: 13
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 pivate # def run infect yield self ensure desinfect end # Infect kernel with highjack # # @return [self] # # @api pivate # 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 desinfect kernel from highjack # # @return [self] # # @api private # def desinfect 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
13 entries across 13 versions & 1 rubygems