Project

General

Profile

Actions

Bug #16251

closed

Evaluation in binding differs from ruby execution

Added by teslur (Tetsushi FUKABORI) over 4 years ago. Updated over 4 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.6.2p47 (2019-03-13 revision 67232) [x86_64-darwin18]
[ruby-core:95332]

Description

In specific situation, I found that result of string evaluation in Binding returns different from ruby execution result.

In following sample code, ruby evaluates method_or_local_var as method call and returns "method".
However, binding.eval evaluates method_or_local_var as local variable and returns nil.

Here is sample code.

def method_or_local_var
  'method'
end

if true
  puts "execute method_or_local_var:"
  p method_or_local_var #=> "method"

  puts "execute method_or_local_var by bind.eval('method_or_local_var'):"
  p binding.eval('method_or_local_var') #=> nil
else
  method_or_local_var = 'local variable'
end

and here is results of execute sample code.

❯ ruby sample_code.rb
execute method_or_local_var:
"method"
execute method_or_local_var by bind.eval('method_or_local_var'):
nil

I expect evaluation result of method_or_local_var in binding to be method, and returns "method".
Is this the expected behavior?

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0