By Shiva Bhusal on Jun, 03, 2016 in ruby, binding, context, ERB
Lets see an example before we explain the term
def binding1 occupation = 'chor' binding end def binding2 occupation = 'engineer' binding end erb = "Ram prasad is <%= occupation %>" ERB.new(erb).result(binding1) # => "Ram prasad is chor" ERB.new(erb).result(binding2) # => "Ram prasad is engineer"
Looking into the example, some of you might have gotten the idea that
binding is nothing more than an object representing a closure where variables/objects are defined. Objects of class
Binding encapsulate the execution context at some particular place in the code and retain this context for future use. You can also imagine this as a variable representing container where stuffs are defined.
class Demo def initialize(n) @secret = n end def get_binding return binding() end end k1 = Demo.new(99) b1 = k1.get_binding k2 = Demo.new(-3) b2 = k2.get_binding eval("@secret", b1) #=> 99 eval("@secret", b2) #=> -3 eval("@secret") #=> nil
Don't miss the next one!