instance method safe_constantize

Ruby on Rails 3.2.22.5

Since v3.2.22.5

Available in: v3.2.22.5 v4.0.13 v4.1.16 v4.2.9 v5.2.8.1 v6.0.6 v6.1.7.10 v7.0.10 v7.1.6 v7.2.3 v8.0.4 v8.1.2

Signature

safe_constantize(camel_cased_word)

Tries to find a constant with the name specified in the argument string:

"Module".safe_constantize     # => Module
"Test::Unit".safe_constantize # => Test::Unit

The name is assumed to be the one of a top-level constant, no matter whether it starts with “::” or not. No lexical context is taken into account:

C = 'outside'
module M
  C = 'inside'
  C                    # => 'inside'
  "C".safe_constantize # => 'outside', same as ::C
end

nil is returned when the name is not in CamelCase or the constant (or part of it) is unknown.

"blargle".safe_constantize  # => nil
"UnknownModule".safe_constantize  # => nil
"UnknownModule::Foo::Bar".safe_constantize  # => nil

Parameters

camel_cased_word req
Source
# File activesupport/lib/active_support/inflector/methods.rb, line 258
    def safe_constantize(camel_cased_word)
      begin
        constantize(camel_cased_word)
      rescue NameError => e
        raise unless e.message =~ /(uninitialized constant|wrong constant name) #{const_regexp(camel_cased_word)}$/ ||
          e.name.to_s == camel_cased_word.to_s
      rescue ArgumentError => e
        raise unless e.message =~ /not missing constant #{const_regexp(camel_cased_word)}\!$/
      end
    end

Defined in activesupport/lib/active_support/inflector/methods.rb line 258 · View on GitHub · Improve this page · Find usages on GitHub

Defined in ActiveSupport::Inflector

Type at least 2 characters to search.

↑↓ navigate · open · esc close