Check if a constant is already defined
RubyConstantsRuby Problem Overview
This is a simple one, I hope. How do I check, in the following example, if a constant is already defined?
#this works
var = var||1
puts var
var = var||2
puts var
#this doesn't
CONST = CONST||1
puts CONST
CONST = CONST||2
puts CONST
=> 1
1
uninitialized constant CONST (NameError)
Ruby Solutions
Solution 1 - Ruby
CONST = 2 unless defined? CONST
See here for more about awesome defined?
operator.
P.S. And in the future I guess you'll want var ||= 1
instead of var = var||1
.
Solution 2 - Ruby
pry> User.const_defined?("PER_PAGE")
=> true
pry> User.const_defined?("PER_PAGE123")
=> false
Solution 3 - Ruby
CONST ||= :default_value
the above works for me on ruby 1.9.3 but fails on 1.8... well 1.8 is ancient now.