class Object
def __binding__
-
(Binding)
-
def __binding__ # If you ever feel like changing this method, be careful about variables # that you use. They shouldn't be inserted into the binding that will # eventually be returned. # When you're cd'd into a class, methods you define should be added to it. if is_a?(Module) # A special case, for JRuby. # Module.new.class_eval("binding") has different behaviour than CRuby, # where this is not needed: class_eval("binding") vs class_eval{binding}. # Using a block works around the difference of behaviour on JRuby. # The scope is clear of local variables. Don't add any. # # This fixes the following two spec failures, at https://travis-ci.org/pry/pry/jobs/274470002 # 1) ./spec/pry_spec.rb:360:in `block in (root)' # 2) ./spec/pry_spec.rb:366:in `block in (root)' return class_eval { binding } if Pry::Helpers::Platform.jruby? && name.nil? # class_eval sets both self and the default definee to this class. return class_eval("binding", __FILE__, __LINE__) end unless self.class.method_defined?(:__pry__) # The easiest way to check whether an object has a working singleton class # is to try and define a method on it. (just checking for the presence of # the singleton class gives false positives for `true` and `false`). # __pry__ is just the closest method we have to hand, and using # it has the nice property that we can memoize this check. begin # instance_eval sets the default definee to the object's singleton class instance_eval(*Pry::BINDING_METHOD_IMPL) # If we can't define methods on the Object's singleton_class. Then we fall # back to setting the default definee to be the Object's class. That seems # nicer than having a REPL in which you can't define methods. rescue TypeError, Pry::FrozenObjectException # class_eval sets the default definee to self.class self.class.class_eval(*Pry::BINDING_METHOD_IMPL) end end __pry__ end