Injection
# File lib/rr/injections/method_missing_injection.rb, line 5 def create(subject) instances[subject] ||= begin new(subject).bind end end
# File lib/rr/injections/method_missing_injection.rb, line 21 def bind unless subject.respond_to?(original_method_alias_name) unless subject.respond_to?(:method_missing) @placeholder_method_defined = true subject_class.class_eval do def method_missing(method_name, *args, &block) super end end end subject_class.__send__(:alias_method, original_method_alias_name, :method_missing) bind_method end self end
# File lib/rr/injections/method_missing_injection.rb, line 51 def dispatch_method(method_name, args, block) MethodDispatches::MethodMissingDispatch.new(subject, method_name, args, block).call end
# File lib/rr/injections/method_missing_injection.rb, line 26 def method_missing(method_name, *args, &block) super end
# File lib/rr/injections/method_missing_injection.rb, line 37 def reset if subject_has_method_defined?(original_method_alias_name) memoized_original_method_alias_name = original_method_alias_name placeholder_method_defined = @placeholder_method_defined subject_class.class_eval do remove_method :method_missing unless placeholder_method_defined alias_method :method_missing, memoized_original_method_alias_name end remove_method memoized_original_method_alias_name end end end
# File lib/rr/injections/method_missing_injection.rb, line 60 def bind_method returns_method = def method_missing(method_name, *args, &block) RR::Injections::MethodMissingInjection.create(self).dispatch_method(method_name, args, block) end subject_class.class_eval(returns_method, __FILE__, __LINE__ - 4) end
Generated with the Darkfish Rdoc Generator 2.