Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get value of all constants defined in a module

Tags:

ruby

I want to get the values of all the constants defined in a module:

module Letters
  A = 'apple'.freeze
  B = 'boy'.freeze
end

constants gave me the name of the constants:

Letters.constants(false)
#=> [:A, :B]

How do I get an array of their values, i.e. ["apple", "boy"]?

like image 966
Sahil Rally Avatar asked Jan 22 '18 16:01

Sahil Rally


1 Answers

In order to do this use map

Letters.constants(false).map &Letters.method(:const_get)

this will return ["a","b"]

Second way :

Letters.constants(false).map { |c| Letters.const_get c }

Thanks @mudasobwa and Sagar Pandya for their answer.

like image 169
Sahil Rally Avatar answered Nov 02 '22 20:11

Sahil Rally