This module is to be included by `Method` and `UnboundMethod` and provides the `source` functionality
We use the included hook to patch Method#source on rubinius. We need to use the included hook as Rubinius defines a `source` on Method so including a module will have no effect (as it's higher up the MRO). @param [Class] klass The class that includes the module.
# File lib/method_source.rb, line 87 def self.included(klass) if klass.method_defined?(:source) && Object.const_defined?(:RUBY_ENGINE) && RUBY_ENGINE =~ /rbx/ klass.class_eval do orig_source = instance_method(:source) define_method(:source) do begin super rescue orig_source.bind(self).call end end end end end
Return the sourcecode for the method as a string (This functionality is only supported in Ruby 1.9 and above) @return [String] The method sourcecode as a string @example
Set.instance_method(:clear).source.display
=>
def clear
@hash.clear
self
end
# File lib/method_source.rb, line 116 def source if respond_to?(:source_location) source = MethodSource.source_helper(source_location) raise "Cannot locate source for this method: #{name}" if !source else raise "#{self.class}#source not supported by this Ruby version (#{RUBY_VERSION})" end source end
Generated with the Darkfish Rdoc Generator 2.
Return the comments associated with the method as a string. (This functionality is only supported in Ruby 1.9 and above) @return [String] The method's comments as a string @example