Objects of class Binding encapsulate the execution context at some particular place in the code and retain this context for future use. The variables, methods, value of self , and possibly an iterator block that can be accessed in this context are all retained. Binding objects can be created using Kernel#binding , and are made available to the callback of Kernel#set_trace_func . These binding objects can be passed as the second argument of the Kernel#eval method, establishing an environment for the evaluation. class Demo def initialize(n) @secret = n end def getBinding return binding() end end k1 = Demo.new(99) b1 = k1.getBinding k2 = Demo.new(-3) b2 = k2.getBinding eval("@secret", b1) #=> 99 eval("@secret", b2) #=> -3 eval("@secret") #=> nil Binding objects have no class-specific methods.
Full article: http://railsapi.com/doc/ruby-v1.9.2/classes/Binding.html