zeitwerk 2.4.2 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Zeitwerk::RealModName
2
4
  UNBOUND_METHOD_MODULE_NAME = Module.instance_method(:name)
3
5
  private_constant :UNBOUND_METHOD_MODULE_NAME
@@ -17,7 +17,7 @@ module Zeitwerk
17
17
  # @sig Hash[String, Zeitwerk::Loader]
18
18
  attr_reader :loaders_managing_gems
19
19
 
20
- # Maps real paths to the loaders responsible for them.
20
+ # Maps absolute paths to the loaders responsible for them.
21
21
  #
22
22
  # This information is used by our decorated `Kernel#require` to be able to
23
23
  # invoke callbacks and autovivify modules.
@@ -73,6 +73,15 @@ module Zeitwerk
73
73
  loaders << loader
74
74
  end
75
75
 
76
+ # @private
77
+ # @sig (Zeitwerk::Loader) -> void
78
+ def unregister_loader(loader)
79
+ loaders.delete(loader)
80
+ loaders_managing_gems.delete_if { |_, l| l == loader }
81
+ autoloads.delete_if { |_, l| l == loader }
82
+ inceptions.delete_if { |_, (_, l)| l == loader }
83
+ end
84
+
76
85
  # This method returns always a loader, the same instance for the same root
77
86
  # file. That is how Zeitwerk::Loader.for_gem is idempotent.
78
87
  #
@@ -90,20 +99,20 @@ module Zeitwerk
90
99
 
91
100
  # @private
92
101
  # @sig (Zeitwerk::Loader, String) -> String
93
- def register_autoload(loader, realpath)
94
- autoloads[realpath] = loader
102
+ def register_autoload(loader, abspath)
103
+ autoloads[abspath] = loader
95
104
  end
96
105
 
97
106
  # @private
98
107
  # @sig (String) -> void
99
- def unregister_autoload(realpath)
100
- autoloads.delete(realpath)
108
+ def unregister_autoload(abspath)
109
+ autoloads.delete(abspath)
101
110
  end
102
111
 
103
112
  # @private
104
113
  # @sig (String, String, Zeitwerk::Loader) -> void
105
- def register_inception(cpath, realpath, loader)
106
- inceptions[cpath] = [realpath, loader]
114
+ def register_inception(cpath, abspath, loader)
115
+ inceptions[cpath] = [abspath, loader]
107
116
  end
108
117
 
109
118
  # @private
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Zeitwerk
4
- VERSION = "2.4.2"
4
+ VERSION = "2.5.0"
5
5
  end
data/lib/zeitwerk.rb CHANGED
@@ -3,10 +3,23 @@
3
3
  module Zeitwerk
4
4
  require_relative "zeitwerk/real_mod_name"
5
5
  require_relative "zeitwerk/loader"
6
+ require_relative "zeitwerk/autoloads"
6
7
  require_relative "zeitwerk/registry"
7
8
  require_relative "zeitwerk/explicit_namespace"
8
9
  require_relative "zeitwerk/inflector"
9
10
  require_relative "zeitwerk/gem_inflector"
10
11
  require_relative "zeitwerk/kernel"
11
12
  require_relative "zeitwerk/error"
13
+ require_relative "zeitwerk/version"
14
+
15
+ # This is a dangerous method.
16
+ #
17
+ # @experimental
18
+ # @sig () -> void
19
+ def self.with_loader
20
+ loader = Zeitwerk::Loader.new
21
+ yield loader
22
+ ensure
23
+ loader.unregister
24
+ end
12
25
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zeitwerk
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.2
4
+ version: 2.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Xavier Noria
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-27 00:00:00.000000000 Z
11
+ date: 2021-10-20 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |2
14
14
  Zeitwerk implements constant autoloading with Ruby semantics. Each gem
@@ -23,6 +23,7 @@ files:
23
23
  - MIT-LICENSE
24
24
  - README.md
25
25
  - lib/zeitwerk.rb
26
+ - lib/zeitwerk/autoloads.rb
26
27
  - lib/zeitwerk/error.rb
27
28
  - lib/zeitwerk/explicit_namespace.rb
28
29
  - lib/zeitwerk/gem_inflector.rb
@@ -30,6 +31,8 @@ files:
30
31
  - lib/zeitwerk/kernel.rb
31
32
  - lib/zeitwerk/loader.rb
32
33
  - lib/zeitwerk/loader/callbacks.rb
34
+ - lib/zeitwerk/loader/config.rb
35
+ - lib/zeitwerk/loader/helpers.rb
33
36
  - lib/zeitwerk/real_mod_name.rb
34
37
  - lib/zeitwerk/registry.rb
35
38
  - lib/zeitwerk/version.rb
@@ -49,14 +52,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
49
52
  requirements:
50
53
  - - ">="
51
54
  - !ruby/object:Gem::Version
52
- version: 2.4.4
55
+ version: '2.5'
53
56
  required_rubygems_version: !ruby/object:Gem::Requirement
54
57
  requirements:
55
58
  - - ">="
56
59
  - !ruby/object:Gem::Version
57
60
  version: '0'
58
61
  requirements: []
59
- rubygems_version: 3.1.2
62
+ rubygems_version: 3.2.22
60
63
  signing_key:
61
64
  specification_version: 4
62
65
  summary: Efficient and thread-safe constant autoloader