__method__()
click to toggle source
def __method__
m = caller(1).first[/`(.*)'/,1]
m.to_sym if m
end
define_singleton_method(*args, &block)
click to toggle source
def define_singleton_method(*args, &block)
class << self
self
end.send(:define_method, *args, &block)
end
instance_exec(*arg, &block)
click to toggle source
def instance_exec(*arg, &block)
class << self
self
end.send(:define_method, :"temporary method for instance_exec", &block)
send(:"temporary method for instance_exec", *arg)
end
lambda_with_lambda_tracking(&block)
click to toggle source
def lambda_with_lambda_tracking(&block)
l = lambda_without_lambda_tracking(&block)
l.send :__is_lambda__=, true unless block.send(:__is_lambda__) == false
l
end
loop_with_stop_iteration(&block)
click to toggle source
def loop_with_stop_iteration(&block)
loop_without_stop_iteration(&block)
rescue StopIteration
end
method_with_additional_info(name)
click to toggle source
def method_with_additional_info(name)
bound = method_without_additional_info(name)
bound.name = name.to_s
bound.receiver = self
bound.owner = self.class.ancestors.find{|mod| mod.instance_methods(false).include? bound.name}
bound
end
proc_with_lambda_tracking(&block)
click to toggle source
def proc_with_lambda_tracking(&block)
l = proc_without_lambda_tracking(&block)
l.send :__is_lambda__=, block.send(:__is_lambda__) == true
l
end
public_method(meth)
click to toggle source
def public_method(meth)
if respond_to?(meth) && !protected_methods.include?(meth.to_s)
method(meth)
else
raise NameError, "undefined method `#{meth}' for class `#{self.class}'"
end
end
public_send(method, *args, &block)
click to toggle source
def public_send(method, *args, &block)
if respond_to?(method) && !protected_methods.include?(method.to_s)
send(method, *args, &block)
else
:foo.generate_a_no_method_error_in_preparation_for_method_missing rescue nil
method_missing(method.to_sym, *args, &block)
end
end
require_with_backports(lib)
click to toggle source
def require_with_backports(lib)
begin
return false unless require_without_backports(lib)
paths = Backports::StdLib.extended_lib.fetch(lib, nil)
rescue LoadError
return false if Backports::StdLib::LoadedFeatures.new.include?(lib)
raise unless paths = Backports::StdLib.extended_lib.fetch(lib, nil)
Backports::StdLib::LoadedFeatures.mark_as_loaded(lib)
end
if paths
paths.each do |path|
require_without_backports(path)
end
end
true
end
singleton_class()
click to toggle source
def singleton_class
class << self; self; end
end
tap() { |self| ... }
click to toggle source
def tap
yield self
self
end