zeitwerk 2.4.2 → 2.5.0.beta4

Sign up to get free protection for your applications and to get access to all the features.
@@ -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.beta4"
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.beta4
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-09-22 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
- version: '0'
60
+ version: 1.3.1
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