Module: ActiveSupport::Dependencies::Loadable
- Defined in:
- activesupport/lib/active_support/dependencies.rb
Overview
Object includes this module.
Class Method Summary collapse
Instance Method Summary collapse
- #load(file, wrap = false) ⇒ Object
- #load_dependency(file) ⇒ Object
- #require(file) ⇒ Object
-
#require_dependency(file_name, message = "No such file to load -- %s") ⇒ Object
Interprets a file using
mechanism
and marks its defined constants as autoloaded. - #require_or_load(file_name) ⇒ Object
-
#unloadable(const_desc) ⇒ Object
Mark the given constant as unloadable.
Class Method Details
Instance Method Details
#load(file, wrap = false) ⇒ Object
239 240 241 242 243 |
# File 'activesupport/lib/active_support/dependencies.rb', line 239 def load(file, wrap = false) result = false load_dependency(file) { result = super } result end |
#load_dependency(file) ⇒ Object
228 229 230 231 232 233 234 235 236 237 |
# File 'activesupport/lib/active_support/dependencies.rb', line 228 def load_dependency(file) if Dependencies.load? && ActiveSupport::Dependencies.constant_watch_stack.watching? Dependencies.new_constants_in(Object) { yield } else yield end rescue Exception => exception # errors from loading file exception.blame_file! file if exception.respond_to? :blame_file! raise end |
#require(file) ⇒ Object
245 246 247 248 249 |
# File 'activesupport/lib/active_support/dependencies.rb', line 245 def require(file) result = false load_dependency(file) { result = super } result end |
#require_dependency(file_name, message = "No such file to load -- %s") ⇒ Object
Interprets a file using mechanism
and marks its defined constants as autoloaded. file_name
can be either a string or respond to to_path
.
Use this method in code that absolutely needs a certain constant to be defined at that point. A typical use case is to make constant name resolution deterministic for constants with the same relative name in different namespaces whose evaluation would depend on load order otherwise.
219 220 221 222 223 224 225 226 |
# File 'activesupport/lib/active_support/dependencies.rb', line 219 def require_dependency(file_name, = "No such file to load -- %s") file_name = file_name.to_path if file_name.respond_to?(:to_path) unless file_name.is_a?(String) raise ArgumentError, "the file name must either be a String or implement #to_path -- you passed #{file_name.inspect}" end Dependencies.depend_on(file_name, ) end |
#require_or_load(file_name) ⇒ Object
206 207 208 |
# File 'activesupport/lib/active_support/dependencies.rb', line 206 def require_or_load(file_name) Dependencies.require_or_load(file_name) end |
#unloadable(const_desc) ⇒ Object
Mark the given constant as unloadable. Unloadable constants are removed each time dependencies are cleared.
Note that marking a constant for unloading need only be done once. Setup or init scripts may list each unloadable constant that may need unloading; each constant will be removed for every subsequent clear, as opposed to for the first clear.
The provided constant descriptor may be a (non-anonymous) module or class, or a qualified constant name as a string or symbol.
Returns true
if the constant was not previously marked for unloading, false
otherwise.
264 265 266 |
# File 'activesupport/lib/active_support/dependencies.rb', line 264 def unloadable(const_desc) Dependencies.mark_for_unload const_desc end |