Module: Requirium
- Defined in:
- lib/requirium.rb,
lib/version.rb
Overview
Automatically calls Kernel#load or Kernel#require on first use. Example usage:
module M
extend Requirium
autoload :A
autoload :B, 'b', 'b1', 'b2'
autoload A: nil, B: ['b', 'b1', 'b2']
autoload_relative :X
autoload_relative :Y, 'y', 'y1', 'y2'
autoload_relative X: nil, Y: ['y', 'y1', 'y2']
autorequire :A
autorequire :B, 'b', 'b1', 'b2'
autorequire A: nil, B: ['b', 'b1', 'b2']
autorequire_relative :X
autorequire_relative :Y, 'y', 'y1', 'y2'
autorequire_relative X: nil, Y: ['y', 'y1', 'y2']
end
Defined Under Namespace
Classes: ConstInfo, LoadLoader, RequireLoader
Constant Summary collapse
- VERSION =
'0.0.3'.freeze
Class Attribute Summary collapse
-
.loader_thread ⇒ Object
readonly
Returns the value of attribute loader_thread.
-
.queue ⇒ Object
readonly
Returns the value of attribute queue.
Instance Method Summary collapse
- #autoload(*args) ⇒ Object
- #autoload_relative(*args) ⇒ Object
- #autorequire(*args) ⇒ Object
- #autorequire_relative(*args) ⇒ Object
-
#const_missing(sym) ⇒ Object
def const_defined?(*args) Requirium.synchronize { super } end.
Class Attribute Details
.loader_thread ⇒ Object (readonly)
Returns the value of attribute loader_thread.
50 51 52 |
# File 'lib/requirium.rb', line 50 def loader_thread @loader_thread end |
.queue ⇒ Object (readonly)
Returns the value of attribute queue.
50 51 52 |
# File 'lib/requirium.rb', line 50 def queue @queue end |
Instance Method Details
#autoload(*args) ⇒ Object
53 54 55 |
# File 'lib/requirium.rb', line 53 def autoload(*args) add_loader LoadLoader, args end |
#autoload_relative(*args) ⇒ Object
57 58 59 |
# File 'lib/requirium.rb', line 57 def autoload_relative(*args) add_loader LoadLoader, args, File.dirname(caller(1, 1)[0][/^(.+):\d+:in `.+'$/, 1]) end |
#autorequire(*args) ⇒ Object
61 62 63 |
# File 'lib/requirium.rb', line 61 def autorequire(*args) add_loader RequireLoader, args end |
#autorequire_relative(*args) ⇒ Object
65 66 67 |
# File 'lib/requirium.rb', line 65 def autorequire_relative(*args) add_loader RequireLoader, args, File.dirname(caller(1, 1)[0][/^(.+):\d+:in `.+'$/, 1]) end |
#const_missing(sym) ⇒ Object
def const_defined?(*args)
Requirium.synchronize { super }
end
73 74 75 76 77 78 79 |
# File 'lib/requirium.rb', line 73 def const_missing(sym) return internal_load(sym) if Thread.current == Requirium.loader_thread Requirium.queue.push(info = ConstInfo.new(self, sym)) info.wait_ready const_defined?(sym) ? const_get(sym) : super end |