Skip to content

Instantly share code, notes, and snippets.

@kenmazaika
Created April 5, 2012 16:07
Show Gist options
  • Select an option

  • Save kenmazaika/2312205 to your computer and use it in GitHub Desktop.

Select an option

Save kenmazaika/2312205 to your computer and use it in GitHub Desktop.
passing variable from current binding to sub binding
1.9.3p0 :128 > b.eval('var_context = nil; lambda {|a| var_context = a }').call("OMGOMG")
=> "OMGOMG"
1.9.3p0 :129 > var_context
NameError: undefined local variable or method `var_context' for main:Object
from (irb):129
from /Users/kmazaika/.rvm/rubies/ruby-1.9.3-p0/bin/irb:16:in `<main>'
1.9.3p0 :130 > b.eval('var_context')
=> "OMGOMG"
@kenmazaika
Copy link
Author

1.9.3p0 :143 > def set_variable_in_binding(passed_binding, variable_name, variable_value)
1.9.3p0 :144?> passed_binding.eval("#{variable_name} = nil; lambda {|a| #{variable_name} = a }").call(variable_value)
1.9.3p0 :145?> end
=> nil
1.9.3p0 :146 > set_variable_in_binding(b, 'hell', 'yup')
=> "yup"
1.9.3p0 :147 > hell
NameError: undefined local variable or method hell' for main:Object from (irb):147 from /Users/kmazaika/.rvm/rubies/ruby-1.9.3-p0/bin/irb:16:in

'
1.9.3p0 :148 > b.eval('hell')
=> "yup"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment