# Accessing variable names in ruby

**URL:** <https://www.ruby-forum.com/t/accessing-variable-names-in-ruby/114030>\
**Category:** Ruby\
**Created:** [September 7, 2007, 7:22am UTC](https://www.ruby-forum.com/t/accessing-variable-names-in-ruby/114030 "2007-09-07T07:22:57Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Todd\_ASJacobs](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/f17d59/32.png) [@Todd\_ASJacobs](https://www.ruby-forum.com/u/Todd_ASJacobs)\
**Post date:** [September 7, 2007, 7:22am UTC](https://www.ruby-forum.com/t/accessing-variable-names-in-ruby/114030/1 "2007-09-07T07:22:57Z")

</div>

I found myself trying to do a bit of ruby debugging, and was going crazy  
trying to figure out how to display a variable’s name instead of its  
value in a string. There may be a more elegant way, but I found that  
symbols did what I wanted:

```
if $DEBUG

```

[:my\_email, :my\_resume, :my\_logfile].each do |v|  
$stderr.puts “DEBUG: #{v} = #{eval v.to\_s}”  
end  
end

Is there a better way?

---

<div class="post-metadata">

**Author:** ![Todd\_ASJacobs](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/f17d59/32.png) [@Todd\_ASJacobs](https://www.ruby-forum.com/u/Todd_ASJacobs)\
**Post date:** [September 8, 2007, 2:04am UTC](https://www.ruby-forum.com/t/accessing-variable-names-in-ruby/114030/2 "2007-09-08T02:04:05Z")

</div>

try v.intern.to\_s

* * *

## Daniel Brumbaugh K. Devi Web D. removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![Todd\_ASJacobs](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/f17d59/32.png) [@Todd\_ASJacobs](https://www.ruby-forum.com/u/Todd_ASJacobs)\
**Post date:** [September 10, 2007, 7:21pm UTC](https://www.ruby-forum.com/t/accessing-variable-names-in-ruby/114030/3 "2007-09-10T19:21:14Z")

</div>

On Sat, Sep 08, 2007 at 09:01:56AM +0900, Devi Web D. wrote:

> try v.intern.to\_s

That doesn’t work with symbols (raises “NoMethodError: undefined method  
`intern’ for :my\_email:Symbol” ), and just returns the value of the  
variable (not the variable name) when used with a variable instead of a  
symbol.

---

<div class="post-metadata">

**Author:** ![Todd\_ASJacobs](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/f17d59/32.png) [@Todd\_ASJacobs](https://www.ruby-forum.com/u/Todd_ASJacobs)\
**Post date:** [September 11, 2007, 10:46am UTC](https://www.ruby-forum.com/t/accessing-variable-names-in-ruby/114030/4 "2007-09-11T10:46:58Z")

</div>

2007/9/7, Todd A. Jacobs [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> Is there a better way?

When you use %w you can easily use strings for this. I’d also use  
#inspect as it is generally better for debugging purposes:

%w[my\_email my\_resume my\_logfile].each do |v|  
$stderr.puts “DEBUG: #{v} = #{eval(v).inspect}”  
end if $DEBUG

Kind regards

robert
