Иногда все, что мне нужно, - это получить значение enum и идентифицировать его имя, подобное миру java.
module Enum
def get_value(str)
const_get(str)
end
def get_name(sym)
sym.to_s.upcase
end
end
class Fruits
include Enum
APPLE = "Delicious"
MANGO = "Sweet"
end
Fruits.get_value('APPLE') #'Delicious'
Fruits.get_value('MANGO') # 'Sweet'
Fruits.get_name(:apple) # 'APPLE'
Fruits.get_name(:mango) # 'MANGO'
Это для меня служит цели enum и делает ее очень расширяемой. Вы можете добавить больше методов в класс Enum, и альты получат их бесплатно во всех определенных перечислениях. например. get_all_names и тому подобное.