32
def method
  a = 3
  b = 4

  some_method_that_gives # [a, b] 
end
Cheng
  • 4,816
  • 4
  • 41
  • 44

3 Answers3

48

local_variables

It outputs array of symbols, presenting variables. In your case: [:a, :b]

Michał Zalewski
  • 3,123
  • 2
  • 24
  • 37
Nakilon
  • 34,866
  • 14
  • 107
  • 142
7

local_variables lists local variables but it lists them before they are defined. See this:

p local_variables
a = 1
p local_variables

this outputs

[:a]
[:a]

which may not be what you expect. Contrast with defined?

p defined? a
a = 1
p defined? a

which outputs the more anticipated

nil
"local-variable"
starfry
  • 9,273
  • 7
  • 66
  • 96
1

if you're looking for the list with their values:

variables = self.local_variables.each_with_object({}) { |key, hash| hash[key] = eval(key.to_s) }
Khaled AbuShqear
  • 1,230
  • 14
  • 24