Module: ActiveSupport::Dependencies::ModuleConstMissing
- Defined in:
- lib/active_support/dependencies.rb
Overview
Module includes this module.
Class Method Summary collapse
Instance Method Summary collapse
- #const_missing(const_name) ⇒ Object
-
#guess_for_anonymous(const_name) ⇒ Object
Dependencies assumes the name of the module reflects the nesting (unless it can be proven that is not the case), and the path to the file that defines the constant.
- #unloadable(const_desc = self) ⇒ Object
Class Method Details
.append_features(base) ⇒ Object
:nodoc:
161 162 163 164 165 166 167 168 169 |
# File 'lib/active_support/dependencies.rb', line 161 def self.append_features(base) base.class_eval do # Emulate #exclude via an ivar return if defined?(@_const_missing) && @_const_missing @_const_missing = instance_method(:const_missing) remove_method(:const_missing) end super end |
.exclude_from(base) ⇒ Object
171 172 173 174 175 176 |
# File 'lib/active_support/dependencies.rb', line 171 def self.exclude_from(base) base.class_eval do define_method :const_missing, @_const_missing @_const_missing = nil end end |
Instance Method Details
#const_missing(const_name) ⇒ Object
178 179 180 181 |
# File 'lib/active_support/dependencies.rb', line 178 def const_missing(const_name) from_mod = anonymous? ? guess_for_anonymous(const_name) : self Dependencies.load_missing_constant(from_mod, const_name) end |
#guess_for_anonymous(const_name) ⇒ Object
Dependencies assumes the name of the module reflects the nesting (unless it can be proven that is not the case), and the path to the file that defines the constant. Anonymous modules cannot follow these conventions and we assume therefore the user wants to refer to a top-level constant.
187 188 189 190 191 192 193 |
# File 'lib/active_support/dependencies.rb', line 187 def guess_for_anonymous(const_name) if Object.const_defined?(const_name) raise NameError, "#{const_name} cannot be autoloaded from an anonymous class or module" else Object end end |
#unloadable(const_desc = self) ⇒ Object
195 196 197 |
# File 'lib/active_support/dependencies.rb', line 195 def unloadable(const_desc = self) super(const_desc) end |