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