Module: Tapioca::Trackers::Autoload

Extended by:
T::Sig
Defined in:
lib/tapioca/trackers/autoload.rb

Constant Summary collapse

NOOP_METHOD =
-> (*_args, **_kwargs, &_block) {}

Class Method Summary collapse

Class Method Details

.eager_load_all!Object



17
18
19
20
21
22
23
24
25
26
# File 'lib/tapioca/trackers/autoload.rb', line 17

def eager_load_all!
  with_disabled_exits do
    until @constant_names_registered_for_autoload.empty?
      # Grab the next constant name
      constant_name = T.must(@constant_names_registered_for_autoload.shift)
      # Trigger autoload by constantizing the registered name
      Reflection.constantize(constant_name, inherit: true)
    end
  end
end

.register(constant_name) ⇒ Object



29
30
31
# File 'lib/tapioca/trackers/autoload.rb', line 29

def register(constant_name)
  @constant_names_registered_for_autoload << constant_name
end

.with_disabled_exits(&block) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/tapioca/trackers/autoload.rb', line 38

def with_disabled_exits(&block)
  original_abort = Kernel.instance_method(:abort)
  original_exit = Kernel.instance_method(:exit)

  begin
    Kernel.define_method(:abort, NOOP_METHOD)
    Kernel.define_method(:exit, NOOP_METHOD)

    block.call
  ensure
    Kernel.define_method(:exit, original_exit)
    Kernel.define_method(:abort, original_abort)
  end
end