module ActiveSupport::Inflector

def camelize(term, uppercase_first_letter = true)

camelize(underscore('SSLError')) # => "SslError"

#underscore, though there are cases where that does not hold:
As a rule of thumb you can think of +camelize+ as the inverse of

camelize('active_model/errors', false) # => "activeModel::Errors"
camelize('active_model/errors') # => "ActiveModel::Errors"
camelize('active_model', false) # => "activeModel"
camelize('active_model') # => "ActiveModel"

paths to namespaces.
Also converts '/' to '::' which is useful for converting

lowerCamelCase.
If the +uppercase_first_letter+ parameter is set to false, then produces
Converts strings to UpperCamelCase.
def camelize(term, uppercase_first_letter = true)
  string = term.to_s
  # String#camelize takes a symbol (:upper or :lower), so here we also support :lower to keep the methods consistent.
  if !uppercase_first_letter || uppercase_first_letter == :lower
    string = string.sub(inflections.acronyms_camelize_regex) { |match| match.downcase! || match }
  elsif string.match?(/\A[a-z\d]*\z/)
    return inflections.acronyms[string]&.dup || string.capitalize
  else
    string = string.sub(/^[a-z\d]*/) { |match| inflections.acronyms[match] || match.capitalize! || match }
  end
  string.gsub!(/(?:_|(\/))([a-z\d]*)/i) do
    word = $2
    substituted = inflections.acronyms[word] || word.capitalize! || word
    $1 ? "::#{substituted}" : substituted
  end
  string
end