From: Lou Vanek Date: 2005-12-28T08:58:18+09:00 Subject: Re: Variable Dump this clumsy script gets you part of the way there. maybe somebody else knows a recursive solution. #!/usr/bin/env ruby $top_level = binding class Binding def info_vars(b = self) vars = eval("local_variables", b) vars.each { |v| puts %(#{v} --> #{eval(v, b).inspect}) } end end def foo_def inside_foo_def = "hello there" binding.info_vars puts "\n# top level:" binding.info_vars $top_level end foo = 'hello' bar = "goodbye" array = [ 'one', 'two' ] foo_def() Dan Smorey Jr. wrote: > I'd like to know how to grab a dump of all variable associated with a > script. Here is a test script I am using... > > #!/usr/bin/env ruby > > class Binding > def info_locals() > vars = eval("local_variables", self) > vars.each { |v| puts %(#{v} --> #{eval(v, self).inspect}) } > end > end > > def foo_def > inside_foo_def = "hello there" > binding.info_locals > end > > foo = 'hello' > bar = "goodbye" > array = [ 'one', 'two' ] > > foo_def() > > I get this output... > > inside_foo_def --> "hello there" > > That's the problem. I do not get all variables, just the variable in > the def foo_def scope. I'd like to be able to grab foo, bar, and > array also, much like this... > > inside_foo_def --> "hello there" > foo --> "hello" > bar --> "bar" > array --> ['one', 'two'] > > Thanks in advance. > >