Module: DeepCover::ModuleOverride
- Included in:
- DeepCover, KernelAutoloadOverride, ModuleAutoloadOverride, RequireOverride
- Defined in:
- lib/deep_cover/module_override.rb
Overview
Helps redefine methods in overriden_modules. For each methods in Mod, this defines ‘<method>_without_deep_cover`. Set `active` to true or false to alias <method> to one or the other.
Instance Attribute Summary collapse
-
#overriden_modules ⇒ Object
readonly
Returns the value of attribute overriden_modules.
Instance Method Summary collapse
Instance Attribute Details
#overriden_modules ⇒ Object (readonly)
Returns the value of attribute overriden_modules.
8 9 10 |
# File 'lib/deep_cover/module_override.rb', line 8 def overriden_modules @overriden_modules end |
Instance Method Details
#active=(active) ⇒ Object
10 11 12 13 14 |
# File 'lib/deep_cover/module_override.rb', line 10 def active=(active) each do |mod, method_name| mod.send :alias_method, method_name, :"#{method_name}_#{active ? 'with' : 'without'}_deep_cover" end end |
#each(&block) ⇒ Object
24 25 26 27 28 29 30 |
# File 'lib/deep_cover/module_override.rb', line 24 def each(&block) overriden_modules.each do |mod| instance_methods(false).each do |method_name| yield mod, method_name end end end |
#override(*modules) ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/deep_cover/module_override.rb', line 16 def override(*modules) @overriden_modules = modules each do |mod, method_name| mod.send :alias_method, :"#{method_name}_without_deep_cover", method_name mod.send :define_method, :"#{method_name}_with_deep_cover", instance_method(method_name) end end |