Надеюсь, это простой. Как в следующем примере проверить, определена ли уже константа?
#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)
const_defined?
но для меня это не работает; не знаю почему.const_defined?
- это методModule
класса, и он сообщит вам, определена ли константа в этом модуле и его предках (необязательно). Посмотрите документы для некоторых примеров - ruby-doc.org/core-1.9.3/Module.html#method-i-const_defined-3Fconst_defined? API
pry> User.const_defined?("PER_PAGE") => true pry> User.const_defined?("PER_PAGE123") => false
источник
CONST ||= :default_value
вышеупомянутое работает для меня на Ruby 1.9.3, но не работает на 1.8 ... ну, 1.8 теперь устарел.
источник