Permalink
Browse files

Clear const references all at once

  • Loading branch information...
1 parent fd1a504 commit 9d0d6f7d261a14def6afd17568b8c8aa7c33d0b3 @jeremy jeremy committed Jun 6, 2010
Showing with 9 additions and 6 deletions.
  1. +9 −6 activesupport/lib/active_support/dependencies.rb
@@ -479,23 +479,26 @@ def load_missing_constant(from_mod, const_name)
def remove_unloadable_constants!
autoloaded_constants.each { |const| remove_constant const }
autoloaded_constants.clear
- references.each {|k,v| v.clear! }
+ Reference.clear!
explicitly_unloadable_constants.each { |const| remove_constant const }
end
class Reference
+ @@constants = Hash.new { |h, k| h[k] = Inflector.constantize(k) }
+
attr_reader :name
- def initialize(name, constant = nil)
- @name, @constant = name, constant
+ def initialize(name)
+ @name = name.to_s
+ @@constants[@name] = name if name.respond_to?(:name)
end
def get
- @constant ||= Inflector.constantize(@name)
+ @@constants[@name]
end
- def clear!
- @constant = nil
+ def self.clear!
+ @@constants.clear
end
end

0 comments on commit 9d0d6f7

Please sign in to comment.