zeitwerk 2.5.4 → 2.6.18

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.
@@ -0,0 +1,5 @@
1
+ class Zeitwerk::NullInflector
2
+ def camelize(basename, _abspath)
3
+ basename
4
+ end
5
+ end
@@ -10,12 +10,11 @@ module Zeitwerk
10
10
  # @sig Array[Zeitwerk::Loader]
11
11
  attr_reader :loaders
12
12
 
13
- # Registers loaders created with `for_gem` to make the method idempotent
14
- # in case of reload.
13
+ # Registers gem loaders to let `for_gem` be idempotent in case of reload.
15
14
  #
16
15
  # @private
17
16
  # @sig Hash[String, Zeitwerk::Loader]
18
- attr_reader :loaders_managing_gems
17
+ attr_reader :gem_loaders_by_root_file
19
18
 
20
19
  # Maps absolute paths to the loaders responsible for them.
21
20
  #
@@ -77,7 +76,7 @@ module Zeitwerk
77
76
  # @sig (Zeitwerk::Loader) -> void
78
77
  def unregister_loader(loader)
79
78
  loaders.delete(loader)
80
- loaders_managing_gems.delete_if { |_, l| l == loader }
79
+ gem_loaders_by_root_file.delete_if { |_, l| l == loader }
81
80
  autoloads.delete_if { |_, l| l == loader }
82
81
  inceptions.delete_if { |_, (_, l)| l == loader }
83
82
  end
@@ -87,14 +86,8 @@ module Zeitwerk
87
86
  #
88
87
  # @private
89
88
  # @sig (String) -> Zeitwerk::Loader
90
- def loader_for_gem(root_file)
91
- loaders_managing_gems[root_file] ||= begin
92
- Loader.new.tap do |loader|
93
- loader.tag = File.basename(root_file, ".rb")
94
- loader.inflector = GemInflector.new(root_file)
95
- loader.push_dir(File.dirname(root_file))
96
- end
97
- end
89
+ def loader_for_gem(root_file, namespace:, warn_on_extra_files:)
90
+ gem_loaders_by_root_file[root_file] ||= GemLoader.__new(root_file, namespace: namespace, warn_on_extra_files: warn_on_extra_files)
98
91
  end
99
92
 
100
93
  # @private
@@ -117,9 +110,12 @@ module Zeitwerk
117
110
 
118
111
  # @private
119
112
  # @sig (String) -> String?
120
- def inception?(cpath)
113
+ def inception?(cpath, registered_by_loader=nil)
121
114
  if pair = inceptions[cpath]
122
- pair.first
115
+ abspath, loader = pair
116
+ if registered_by_loader.nil? || registered_by_loader.equal?(loader)
117
+ abspath
118
+ end
123
119
  end
124
120
  end
125
121
 
@@ -137,9 +133,9 @@ module Zeitwerk
137
133
  end
138
134
  end
139
135
 
140
- @loaders = []
141
- @loaders_managing_gems = {}
142
- @autoloads = {}
143
- @inceptions = {}
136
+ @loaders = []
137
+ @gem_loaders_by_root_file = {}
138
+ @autoloads = {}
139
+ @inceptions = {}
144
140
  end
145
141
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Zeitwerk
4
- VERSION = "2.5.4"
4
+ VERSION = "2.6.18"
5
5
  end
data/lib/zeitwerk.rb CHANGED
@@ -2,11 +2,15 @@
2
2
 
3
3
  module Zeitwerk
4
4
  require_relative "zeitwerk/real_mod_name"
5
+ require_relative "zeitwerk/internal"
6
+ require_relative "zeitwerk/cref"
5
7
  require_relative "zeitwerk/loader"
8
+ require_relative "zeitwerk/gem_loader"
6
9
  require_relative "zeitwerk/registry"
7
10
  require_relative "zeitwerk/explicit_namespace"
8
11
  require_relative "zeitwerk/inflector"
9
12
  require_relative "zeitwerk/gem_inflector"
13
+ require_relative "zeitwerk/null_inflector"
10
14
  require_relative "zeitwerk/kernel"
11
15
  require_relative "zeitwerk/error"
12
16
  require_relative "zeitwerk/version"
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.5.4
4
+ version: 2.6.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Xavier Noria
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-27 00:00:00.000000000 Z
11
+ date: 2024-09-02 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |2
14
14
  Zeitwerk implements constant autoloading with Ruby semantics. Each gem
@@ -23,15 +23,20 @@ files:
23
23
  - MIT-LICENSE
24
24
  - README.md
25
25
  - lib/zeitwerk.rb
26
+ - lib/zeitwerk/cref.rb
26
27
  - lib/zeitwerk/error.rb
27
28
  - lib/zeitwerk/explicit_namespace.rb
28
29
  - lib/zeitwerk/gem_inflector.rb
30
+ - lib/zeitwerk/gem_loader.rb
29
31
  - lib/zeitwerk/inflector.rb
32
+ - lib/zeitwerk/internal.rb
30
33
  - lib/zeitwerk/kernel.rb
31
34
  - lib/zeitwerk/loader.rb
32
35
  - lib/zeitwerk/loader/callbacks.rb
33
36
  - lib/zeitwerk/loader/config.rb
37
+ - lib/zeitwerk/loader/eager_load.rb
34
38
  - lib/zeitwerk/loader/helpers.rb
39
+ - lib/zeitwerk/null_inflector.rb
35
40
  - lib/zeitwerk/real_mod_name.rb
36
41
  - lib/zeitwerk/registry.rb
37
42
  - lib/zeitwerk/version.rb
@@ -58,7 +63,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
58
63
  - !ruby/object:Gem::Version
59
64
  version: '0'
60
65
  requirements: []
61
- rubygems_version: 3.3.3
66
+ rubygems_version: 3.5.11
62
67
  signing_key:
63
68
  specification_version: 4
64
69
  summary: Efficient and thread-safe constant autoloader