# Dynamically referencing class constants?

**URL:** <https://www.ruby-forum.com/t/dynamically-referencing-class-constants/106786>\
**Category:** Ruby\
**Created:** [June 14, 2007, 3:18am UTC](https://www.ruby-forum.com/t/dynamically-referencing-class-constants/106786 "2007-06-14T03:18:09Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![lstrecv](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/e68b1a/32.png) [@lstrecv](https://www.ruby-forum.com/u/lstrecv)\
**Post date:** [June 14, 2007, 3:18am UTC](https://www.ruby-forum.com/t/dynamically-referencing-class-constants/106786/1 "2007-06-14T03:18:09Z")

</div>

How can I do this?

Socket.constants.each {|i|  
puts Socket::#{i} ##does not work of course  
}

#################################  
Futile attempts:

irb(main):023:0\> puts Socket::SEEK\_CUR ##works of course, the rest  
does  
not  
1  
irb(main):029:0\> puts Socket.new.SEEK\_CUR  
ArgumentError: wrong number of arguments (0 for 3)  
from (irb):29:in `initialize' from (irb):29:in`new’  
from (irb):29  
irb(main):030:0\> x = “SEEK\_CUR”  
=\> “SEEK\_CUR”  
irb(main):031:0\> Socket::#{x}  
irb(main):032:0\*  
irb(main):033:0\* end  
NoMethodError: undefined method `end' for Socket:Class from (irb):33 irb(main):034:0> Socket::send("SEEK_CUR") NoMethodError: undefined method`SEEK\_CUR’ for Socket:Class  
from (irb):34:in `send’  
from (irb):34

---

<div class="post-metadata">

**Author:** ![lstrecv](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/e68b1a/32.png) [@lstrecv](https://www.ruby-forum.com/u/lstrecv)\
**Post date:** [June 14, 2007, 3:24am UTC](https://www.ruby-forum.com/t/dynamically-referencing-class-constants/106786/2 "2007-06-14T03:24:09Z")

</div>

On 6/13/07, list. rb [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> irb(main):023:0\> puts Socket::SEEK\_CUR ##works of course, the rest does  
> irb(main):032:0\*  
> irb(main):033:0\* end  
> NoMethodError: undefined method `end' for Socket:Class from (irb):33 irb(main):034:0> Socket::send("SEEK_CUR") NoMethodError: undefined method `SEEK\_CUR’ for Socket:Class  
> from (irb):34:in `send’  
> from (irb):34

Socket.const\_get(“SEEK\_CUR”)

---

<div class="post-metadata">

**Author:** ![lstrecv](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/e68b1a/32.png) [@lstrecv](https://www.ruby-forum.com/u/lstrecv)\
**Post date:** [June 14, 2007, 3:27am UTC](https://www.ruby-forum.com/t/dynamically-referencing-class-constants/106786/3 "2007-06-14T03:27:09Z")

</div>

On Thu, 2007-06-14 at 10:16 +0900, list. rb wrote:

> How can I do this?
> 
> Socket.constants.each {|i|  
> puts Socket::"#{i}" ##does not work of course  
> }

puts “Socket::#{i}”

---

<div class="post-metadata">

**Author:** ![lstrecv](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/e68b1a/32.png) [@lstrecv](https://www.ruby-forum.com/u/lstrecv)\
**Post date:** [June 14, 2007, 5:26am UTC](https://www.ruby-forum.com/t/dynamically-referencing-class-constants/106786/4 "2007-06-14T05:26:21Z")

</div>

A++

Thanks alot

---

<div class="post-metadata">

**Author:** ![lstrecv](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/e68b1a/32.png) [@lstrecv](https://www.ruby-forum.com/u/lstrecv)\
**Post date:** [June 14, 2007, 3:28am UTC](https://www.ruby-forum.com/t/dynamically-referencing-class-constants/106786/5 "2007-06-14T03:28:09Z")

</div>

On Thu, 2007-06-14 at 10:26 +0900, Reid T. wrote:

> On Thu, 2007-06-14 at 10:16 +0900, list. rb wrote:
> 
> > How can I do this?
> > 
> > Socket.constants.each {|i|  
> > puts Socket::"#{i}" ##does not work of course  
> > }
> 
> puts “Socket::#{i}”

doh!!! sorry, missed the dereference…
