Este es simple, espero. ¿Cómo verifico, en el siguiente ejemplo, si una constante ya está definida?
#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?
pero no me funciona; no estoy seguro de por qué.const_defined?
es un método deModule
clase y le dirá si la constante está definida en ese módulo y sus ancestros (opcionalmente). Consulte los documentos para ver algunos ejemplos: 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
fuente
CONST ||= :default_value
lo anterior funciona para mí en ruby 1.9.3 pero falla en 1.8 ... bueno, 1.8 es antiguo ahora.
fuente