# Puts by name

**URL:** <https://www.ruby-forum.com/t/puts-by-name/193249>\
**Category:** Ruby\
**Created:** [August 14, 2010, 1:03am UTC](https://www.ruby-forum.com/t/puts-by-name/193249 "2010-08-14T01:03:57Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![ralphshnelvar](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/e19adc/32.png) [@ralphshnelvar](https://www.ruby-forum.com/u/ralphshnelvar)\
**Post date:** [August 14, 2010, 1:03am UTC](https://www.ruby-forum.com/t/puts-by-name/193249/1 "2010-08-14T01:03:57Z")

</div>

I very often do something like:  
puts “some\_variable.something = #{some\_variable.something}”

That repetition is getting annoying.

Is there an idiomatic Ruby way to do something like  
puts\_v some\_variable.something

---

<div class="post-metadata">

**Author:** ![ralphshnelvar](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/e19adc/32.png) [@ralphshnelvar](https://www.ruby-forum.com/u/ralphshnelvar)\
**Post date:** [August 14, 2010, 1:14am UTC](https://www.ruby-forum.com/t/puts-by-name/193249/2 "2010-08-14T01:14:30Z")

</div>

On Aug 13, 2010, at 4:02 PM, Ralph S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> I very often do something like:  
> puts “some\_variable.something = #{some\_variable.something}”
> 
> That repetition is getting annoying.
> 
> Is there an idiomatic Ruby way to do something like  
> puts\_v some\_variable.something

Yes.

assert\_equal expected, actual

---

<div class="post-metadata">

**Author:** ![ralphshnelvar](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/e19adc/32.png) [@ralphshnelvar](https://www.ruby-forum.com/u/ralphshnelvar)\
**Post date:** [August 14, 2010, 2:52am UTC](https://www.ruby-forum.com/t/puts-by-name/193249/3 "2010-08-14T02:52:14Z")

</div>

On Fri, Aug 13, 2010 at 4:02 PM, Ralph S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> I very often do something like:  
> Â puts “some\_variable.something = #{some\_variable.something}”
> 
> That repetition is getting annoying.

If you’re repeating it that much, you’re not writing enough tests. 🙂  
Using `p` can save you a bit of annoyance, but not much:

```
p :something => some_variable.something

```

~ j.

---

<div class="post-metadata">

**Author:** ![ralphshnelvar](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/e19adc/32.png) [@ralphshnelvar](https://www.ruby-forum.com/u/ralphshnelvar)\
**Post date:** [August 16, 2010, 5:02pm UTC](https://www.ruby-forum.com/t/puts-by-name/193249/4 "2010-08-16T17:02:48Z")

</div>

Ralph S. wrote:

> I very often do something like:  
> puts “some\_variable.something = #{some\_variable.something}”
> 
> That repetition is getting annoying.
> 
> Is there an idiomatic Ruby way to do something like  
> puts\_v some\_variable.something

Given this:

some\_variable = Object.new  
def some\_variable.something; “hello”; end

# Option 1

def puts\_v(str, b)  
puts “#{str} = #{eval(str, b).inspect}”  
end

puts\_v “some\_variable.something”, binding

# Option 2, using a block to get the Binding

def puts\_v(&blk)  
str = yield  
puts “#{str} = #{eval(str, blk).inspect}”  
end

puts\_v { “some\_variable.something” }

# Option 2a, looks a bit odd

puts\_v {%{some\_variable.something}}

# Google also for Binding.of\_caller
