<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -291,11 +291,14 @@ module ActiveSupport
     # NameError is raised when the name is not in CamelCase or the constant is
     # unknown.
     def constantize(camel_cased_word)
-      unless /\A(?:::)?([A-Z]\w*(?:::[A-Z]\w*)*)\z/ =~ camel_cased_word
-        raise NameError, &quot;#{camel_cased_word.inspect} is not a valid constant name!&quot;
-      end
+      names = camel_cased_word.split('::')
+      names.shift if names.empty? || names.first.empty?
 
-      Object.module_eval(&quot;::#{$1}&quot;, __FILE__, __LINE__)
+      constant = Object
+      names.each do |name|
+        constant = constant.const_defined?(name) ? constant.const_get(name) : constant.const_missing(name)
+      end
+      constant
     end
 
     # Turns a number into an ordinal string used to denote the position in an
@@ -326,4 +329,4 @@ require 'active_support/inflections'
 require 'active_support/core_ext/string/inflections'
 unless String.included_modules.include?(ActiveSupport::CoreExtensions::String::Inflections)
   String.send :include, ActiveSupport::CoreExtensions::String::Inflections
-end
\ No newline at end of file
+end</diff>
      <filename>activesupport/lib/active_support/inflector.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>f5bcbde1e387020c7f4968515921a3ccee3dcda2</id>
    </parent>
  </parents>
  <author>
    <name>Jeremy Kemper</name>
    <email>jeremy@bitsweat.net</email>
  </author>
  <url>http://github.com/rails/rails/commit/ed8a882e47e07b470b71cacd8cd50e251dca4d27</url>
  <id>ed8a882e47e07b470b71cacd8cd50e251dca4d27</id>
  <committed-date>2008-08-06T17:31:57-07:00</committed-date>
  <authored-date>2008-08-06T17:31:57-07:00</authored-date>
  <message>JRuby: improve constantize performance.  [#410 state:resolved]</message>
  <tree>0f235c30d417d48189658148760bf3ab0ad43bd0</tree>
  <committer>
    <name>Jeremy Kemper</name>
    <email>jeremy@bitsweat.net</email>
  </committer>
</commit>
