Проверьте, определена ли константа

Надеюсь, это просто. Как проверить в следующем примере, если константа уже определена?

#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)

Ответ 1

CONST = 2 unless defined? CONST

Смотрите здесь для получения дополнительной информации об удивительном операторе defined?.

P.S. И в будущем, я думаю, вы захотите var ||= 1 вместо var = var||1.

Ответ 2

const_defined? API

pry> User.const_defined?("PER_PAGE")
=> true
pry> User.const_defined?("PER_PAGE123")
=> false

Ответ 3

CONST ||= :default_value

выше работает для меня на рубине 1.9.3, но терпит неудачу на 1.8... хорошо 1.8 теперь древнее.