Sha256: 9f2f05d7a3691e3d3f976201417e2277ac19ef25afbfb9ae0bd1a4e3c93bca95
Contents?: true
Size: 1.07 KB
Versions: 1
Compression:
Stored size: 1.07 KB
Contents
module Konstructor # :nodoc: module KonstructorMethodHook # Experimental and currently not used <code>method_added</code> # hook approach protecting against method_added # overrides that are not calling super (hopefully, there is no such code in the wild). # # Since method_added hook is idempotent, there would be no harm done even if # overridding method_added actually had super call and Konstructor's hook would be # called twice as a result of this. def self.setup(base) method_added_method = base.method(:method_added) if method_added_method.source_location method_added_file_path = method_added_method.source_location.first return if method_added_file_path.include?('konstructor_method_hook') end base.instance_exec do private alias konstructor_super_method_added method_added def method_added(name) @konstructor ||= Konstructor.new(self) @konstructor.method_added_to_klass(name) konstructor_super_method_added(name) end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
konstructor-0.4.2 | lib/konstructor/konstructor_method_hook.rb |