konstruo 1.0.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.
- checksums.yaml +7 -0
- data/.rspec +3 -0
- data/.rubocop.yml +22 -0
- data/.tool-versions +1 -0
- data/CHANGELOG.md +21 -0
- data/LICENSE.txt +21 -0
- data/README.md +35 -0
- data/Rakefile +10 -0
- data/lib/konstruo/mapper.rb +120 -0
- data/lib/konstruo/version.rb +6 -0
- data/lib/konstruo.rb +18 -0
- data/sorbet/config +4 -0
- data/sorbet/rbi/annotations/.gitattributes +1 -0
- data/sorbet/rbi/annotations/actionmailer.rbi +10 -0
- data/sorbet/rbi/annotations/actionpack.rbi +430 -0
- data/sorbet/rbi/annotations/actionview.rbi +75 -0
- data/sorbet/rbi/annotations/activejob.rbi +44 -0
- data/sorbet/rbi/annotations/activemodel.rbi +89 -0
- data/sorbet/rbi/annotations/activerecord.rbi +92 -0
- data/sorbet/rbi/annotations/activesupport.rbi +454 -0
- data/sorbet/rbi/annotations/globalid.rbi +30 -0
- data/sorbet/rbi/annotations/minitest.rbi +119 -0
- data/sorbet/rbi/annotations/railties.rbi +61 -0
- data/sorbet/rbi/annotations/rainbow.rbi +269 -0
- data/sorbet/rbi/dsl/.gitattributes +1 -0
- data/sorbet/rbi/dsl/active_support/callbacks.rbi +23 -0
- data/sorbet/rbi/gems/.gitattributes +1 -0
- data/sorbet/rbi/gems/actioncable@7.2.1.rbi +3096 -0
- data/sorbet/rbi/gems/actionmailbox@7.2.1.rbi +1832 -0
- data/sorbet/rbi/gems/actionmailer@7.2.1.rbi +2664 -0
- data/sorbet/rbi/gems/actionpack@7.2.1.rbi +20536 -0
- data/sorbet/rbi/gems/actiontext@7.2.1.rbi +1697 -0
- data/sorbet/rbi/gems/actionview@7.2.1.rbi +15752 -0
- data/sorbet/rbi/gems/activejob@7.2.1.rbi +2828 -0
- data/sorbet/rbi/gems/activemodel@7.2.1.rbi +6762 -0
- data/sorbet/rbi/gems/activerecord@7.2.1.rbi +41433 -0
- data/sorbet/rbi/gems/activestorage@7.2.1.rbi +3247 -0
- data/sorbet/rbi/gems/activesupport@7.2.1.rbi +21142 -0
- data/sorbet/rbi/gems/ast@2.4.2.rbi +585 -0
- data/sorbet/rbi/gems/base64@0.2.0.rbi +509 -0
- data/sorbet/rbi/gems/bigdecimal@3.1.8.rbi +78 -0
- data/sorbet/rbi/gems/builder@3.3.0.rbi +9 -0
- data/sorbet/rbi/gems/concurrent-ruby@1.3.4.rbi +11645 -0
- data/sorbet/rbi/gems/connection_pool@2.4.1.rbi +9 -0
- data/sorbet/rbi/gems/crass@1.0.6.rbi +623 -0
- data/sorbet/rbi/gems/dashbrains-rubocop-config@1.0.4.rbi +9 -0
- data/sorbet/rbi/gems/date@3.3.4.rbi +75 -0
- data/sorbet/rbi/gems/diff-lcs@1.5.1.rbi +1131 -0
- data/sorbet/rbi/gems/drb@2.2.1.rbi +1347 -0
- data/sorbet/rbi/gems/erubi@1.13.0.rbi +150 -0
- data/sorbet/rbi/gems/globalid@1.2.1.rbi +749 -0
- data/sorbet/rbi/gems/i18n@1.14.5.rbi +2359 -0
- data/sorbet/rbi/gems/io-console@0.7.2.rbi +9 -0
- data/sorbet/rbi/gems/json@2.7.2.rbi +1562 -0
- data/sorbet/rbi/gems/language_server-protocol@3.17.0.3.rbi +14238 -0
- data/sorbet/rbi/gems/logger@1.6.1.rbi +920 -0
- data/sorbet/rbi/gems/loofah@2.22.0.rbi +1081 -0
- data/sorbet/rbi/gems/mail@2.8.1.rbi +8658 -0
- data/sorbet/rbi/gems/marcel@1.0.4.rbi +239 -0
- data/sorbet/rbi/gems/mini_mime@1.1.5.rbi +173 -0
- data/sorbet/rbi/gems/minitest@5.25.1.rbi +1546 -0
- data/sorbet/rbi/gems/net-imap@0.4.16.rbi +10845 -0
- data/sorbet/rbi/gems/net-pop@0.1.2.rbi +927 -0
- data/sorbet/rbi/gems/net-protocol@0.2.2.rbi +292 -0
- data/sorbet/rbi/gems/net-smtp@0.5.0.rbi +1228 -0
- data/sorbet/rbi/gems/netrc@0.11.0.rbi +159 -0
- data/sorbet/rbi/gems/nio4r@2.7.3.rbi +293 -0
- data/sorbet/rbi/gems/nokogiri@1.16.7.rbi +7311 -0
- data/sorbet/rbi/gems/parallel@1.26.3.rbi +291 -0
- data/sorbet/rbi/gems/parser@3.3.5.0.rbi +5519 -0
- data/sorbet/rbi/gems/prism@1.0.0.rbi +35493 -0
- data/sorbet/rbi/gems/psych@5.1.2.rbi +1769 -0
- data/sorbet/rbi/gems/racc@1.8.1.rbi +162 -0
- data/sorbet/rbi/gems/rack-session@2.0.0.rbi +727 -0
- data/sorbet/rbi/gems/rack-test@2.1.0.rbi +747 -0
- data/sorbet/rbi/gems/rack@3.1.7.rbi +4902 -0
- data/sorbet/rbi/gems/rackup@2.1.0.rbi +390 -0
- data/sorbet/rbi/gems/rails-dom-testing@2.2.0.rbi +758 -0
- data/sorbet/rbi/gems/rails-html-sanitizer@1.6.0.rbi +785 -0
- data/sorbet/rbi/gems/rails@7.2.1.rbi +9 -0
- data/sorbet/rbi/gems/railties@7.2.1.rbi +3824 -0
- data/sorbet/rbi/gems/rainbow@3.1.1.rbi +403 -0
- data/sorbet/rbi/gems/rake@13.2.1.rbi +3046 -0
- data/sorbet/rbi/gems/rbi@0.2.0.rbi +4105 -0
- data/sorbet/rbi/gems/rdoc@6.7.0.rbi +12721 -0
- data/sorbet/rbi/gems/regexp_parser@2.9.2.rbi +3772 -0
- data/sorbet/rbi/gems/reline@0.5.10.rbi +9 -0
- data/sorbet/rbi/gems/rspec-core@3.13.1.rbi +11012 -0
- data/sorbet/rbi/gems/rspec-expectations@3.13.3.rbi +8183 -0
- data/sorbet/rbi/gems/rspec-mocks@3.13.1.rbi +5341 -0
- data/sorbet/rbi/gems/rspec-support@3.13.1.rbi +1630 -0
- data/sorbet/rbi/gems/rspec@3.13.0.rbi +83 -0
- data/sorbet/rbi/gems/rubocop-ast@1.32.3.rbi +7446 -0
- data/sorbet/rbi/gems/rubocop-capybara@2.21.0.rbi +9 -0
- data/sorbet/rbi/gems/rubocop-factory_bot@2.26.1.rbi +9 -0
- data/sorbet/rbi/gems/rubocop-graphql@1.5.4.rbi +9 -0
- data/sorbet/rbi/gems/rubocop-minitest@0.36.0.rbi +9 -0
- data/sorbet/rbi/gems/rubocop-performance@1.21.1.rbi +9 -0
- data/sorbet/rbi/gems/rubocop-rails@2.26.1.rbi +9 -0
- data/sorbet/rbi/gems/rubocop-rake@0.6.0.rbi +329 -0
- data/sorbet/rbi/gems/rubocop-rspec@3.0.5.rbi +9 -0
- data/sorbet/rbi/gems/rubocop-rspec_rails@2.30.0.rbi +9 -0
- data/sorbet/rbi/gems/rubocop-sorbet@0.8.5.rbi +9 -0
- data/sorbet/rbi/gems/rubocop@1.66.1.rbi +58268 -0
- data/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +1318 -0
- data/sorbet/rbi/gems/securerandom@0.3.1.rbi +396 -0
- data/sorbet/rbi/gems/spoom@1.4.2.rbi +4932 -0
- data/sorbet/rbi/gems/stringio@3.1.1.rbi +9 -0
- data/sorbet/rbi/gems/tapioca@0.16.2.rbi +3581 -0
- data/sorbet/rbi/gems/thor@1.3.2.rbi +4378 -0
- data/sorbet/rbi/gems/timeout@0.4.1.rbi +149 -0
- data/sorbet/rbi/gems/tzinfo@2.0.6.rbi +5918 -0
- data/sorbet/rbi/gems/unicode-display_width@2.5.0.rbi +66 -0
- data/sorbet/rbi/gems/useragent@0.16.10.rbi +9 -0
- data/sorbet/rbi/gems/webrick@1.8.1.rbi +2607 -0
- data/sorbet/rbi/gems/websocket-driver@0.7.6.rbi +993 -0
- data/sorbet/rbi/gems/websocket-extensions@0.1.5.rbi +121 -0
- data/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi +435 -0
- data/sorbet/rbi/gems/yard@0.9.37.rbi +18570 -0
- data/sorbet/rbi/gems/zeitwerk@2.6.18.rbi +1051 -0
- data/sorbet/rbi/todo.rbi +6 -0
- data/sorbet/tapioca/config.yml +13 -0
- data/sorbet/tapioca/require.rb +9 -0
- data/tasks/bundle_update.rake +14 -0
- data/tasks/sorbet.rake +26 -0
- metadata +216 -0
@@ -0,0 +1,1051 @@
|
|
1
|
+
# typed: true
|
2
|
+
|
3
|
+
# DO NOT EDIT MANUALLY
|
4
|
+
# This is an autogenerated file for types exported from the `zeitwerk` gem.
|
5
|
+
# Please instead update this file by running `bin/tapioca gem zeitwerk`.
|
6
|
+
|
7
|
+
|
8
|
+
# source://zeitwerk//lib/zeitwerk/kernel.rb#3
|
9
|
+
module Kernel
|
10
|
+
private
|
11
|
+
|
12
|
+
# source://zeitwerk//lib/zeitwerk/kernel.rb#23
|
13
|
+
def require(path); end
|
14
|
+
|
15
|
+
class << self
|
16
|
+
# source://zeitwerk//lib/zeitwerk/kernel.rb#23
|
17
|
+
def require(path); end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
# source://zeitwerk//lib/zeitwerk.rb#3
|
22
|
+
module Zeitwerk
|
23
|
+
class << self
|
24
|
+
# This is a dangerous method.
|
25
|
+
#
|
26
|
+
# source://zeitwerk//lib/zeitwerk.rb#22
|
27
|
+
def with_loader; end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# This private class encapsulates pairs (mod, cname).
|
32
|
+
#
|
33
|
+
# Objects represent the constant cname in the class or module object mod, and
|
34
|
+
# have API to manage them that encapsulates the constants API. Examples:
|
35
|
+
#
|
36
|
+
# cref.path
|
37
|
+
# cref.set(value)
|
38
|
+
# cref.get
|
39
|
+
#
|
40
|
+
# The constant may or may not exist in mod.
|
41
|
+
#
|
42
|
+
# source://zeitwerk//lib/zeitwerk/cref.rb#13
|
43
|
+
class Zeitwerk::Cref
|
44
|
+
include ::Zeitwerk::RealModName
|
45
|
+
|
46
|
+
# The type of the first argument is Module because Class < Module, class
|
47
|
+
# objects are also valid.
|
48
|
+
#
|
49
|
+
# @return [Cref] a new instance of Cref
|
50
|
+
#
|
51
|
+
# source://zeitwerk//lib/zeitwerk/cref.rb#23
|
52
|
+
def initialize(mod, cname); end
|
53
|
+
|
54
|
+
# source://zeitwerk//lib/zeitwerk/cref.rb#74
|
55
|
+
def autoload(abspath); end
|
56
|
+
|
57
|
+
# @return [Boolean]
|
58
|
+
#
|
59
|
+
# source://zeitwerk//lib/zeitwerk/cref.rb#68
|
60
|
+
def autoload?; end
|
61
|
+
|
62
|
+
# Returns the value of attribute cname.
|
63
|
+
#
|
64
|
+
# source://zeitwerk//lib/zeitwerk/cref.rb#17
|
65
|
+
def cname; end
|
66
|
+
|
67
|
+
# @return [Boolean]
|
68
|
+
#
|
69
|
+
# source://zeitwerk//lib/zeitwerk/cref.rb#79
|
70
|
+
def defined?; end
|
71
|
+
|
72
|
+
# @raise [NameError]
|
73
|
+
#
|
74
|
+
# source://zeitwerk//lib/zeitwerk/cref.rb#90
|
75
|
+
def get; end
|
76
|
+
|
77
|
+
# source://zeitwerk//lib/zeitwerk/cref.rb#34
|
78
|
+
def path; end
|
79
|
+
|
80
|
+
# @raise [NameError]
|
81
|
+
#
|
82
|
+
# source://zeitwerk//lib/zeitwerk/cref.rb#96
|
83
|
+
def remove; end
|
84
|
+
|
85
|
+
# source://zeitwerk//lib/zeitwerk/cref.rb#84
|
86
|
+
def set(value); end
|
87
|
+
end
|
88
|
+
|
89
|
+
# source://zeitwerk//lib/zeitwerk/error.rb#4
|
90
|
+
class Zeitwerk::Error < ::StandardError; end
|
91
|
+
|
92
|
+
# Centralizes the logic for the trace point used to detect the creation of
|
93
|
+
# explicit namespaces, needed to descend into matching subdirectories right
|
94
|
+
# after the constant has been defined.
|
95
|
+
#
|
96
|
+
# The implementation assumes an explicit namespace is managed by one loader.
|
97
|
+
# Loaders that reopen namespaces owned by other projects are responsible for
|
98
|
+
# loading their constant before setup. This is documented.
|
99
|
+
#
|
100
|
+
# source://zeitwerk//lib/zeitwerk/explicit_namespace.rb#11
|
101
|
+
module Zeitwerk::ExplicitNamespace
|
102
|
+
extend ::Zeitwerk::RealModName
|
103
|
+
|
104
|
+
class << self
|
105
|
+
# source://zeitwerk//lib/zeitwerk/explicit_namespace.rb#35
|
106
|
+
def __register(cpath, loader); end
|
107
|
+
|
108
|
+
# source://zeitwerk//lib/zeitwerk/explicit_namespace.rb#53
|
109
|
+
def __registered?(cpath); end
|
110
|
+
|
111
|
+
# source://zeitwerk//lib/zeitwerk/explicit_namespace.rb#45
|
112
|
+
def __unregister_loader(loader); end
|
113
|
+
|
114
|
+
private
|
115
|
+
|
116
|
+
# Maps constant paths that correspond to explicit namespaces according to
|
117
|
+
# the file system, to the loader responsible for them.
|
118
|
+
#
|
119
|
+
# source://zeitwerk//lib/zeitwerk/explicit_namespace.rb#20
|
120
|
+
def cpaths; end
|
121
|
+
|
122
|
+
# source://zeitwerk//lib/zeitwerk/explicit_namespace.rb#58
|
123
|
+
def disable_tracer_if_unneeded; end
|
124
|
+
|
125
|
+
# Returns the value of attribute mutex.
|
126
|
+
#
|
127
|
+
# source://zeitwerk//lib/zeitwerk/explicit_namespace.rb#24
|
128
|
+
def mutex; end
|
129
|
+
|
130
|
+
# source://zeitwerk//lib/zeitwerk/explicit_namespace.rb#35
|
131
|
+
def register(cpath, loader); end
|
132
|
+
|
133
|
+
# source://zeitwerk//lib/zeitwerk/explicit_namespace.rb#53
|
134
|
+
def registered?(cpath); end
|
135
|
+
|
136
|
+
# source://zeitwerk//lib/zeitwerk/explicit_namespace.rb#65
|
137
|
+
def tracepoint_class_callback(event); end
|
138
|
+
|
139
|
+
# Returns the value of attribute tracer.
|
140
|
+
#
|
141
|
+
# source://zeitwerk//lib/zeitwerk/explicit_namespace.rb#28
|
142
|
+
def tracer; end
|
143
|
+
|
144
|
+
# source://zeitwerk//lib/zeitwerk/explicit_namespace.rb#45
|
145
|
+
def unregister_loader(loader); end
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
# source://zeitwerk//lib/zeitwerk/gem_inflector.rb#4
|
150
|
+
class Zeitwerk::GemInflector < ::Zeitwerk::Inflector
|
151
|
+
# @return [GemInflector] a new instance of GemInflector
|
152
|
+
#
|
153
|
+
# source://zeitwerk//lib/zeitwerk/gem_inflector.rb#6
|
154
|
+
def initialize(root_file); end
|
155
|
+
|
156
|
+
# source://zeitwerk//lib/zeitwerk/gem_inflector.rb#13
|
157
|
+
def camelize(basename, abspath); end
|
158
|
+
end
|
159
|
+
|
160
|
+
# @private
|
161
|
+
#
|
162
|
+
# source://zeitwerk//lib/zeitwerk/gem_loader.rb#5
|
163
|
+
class Zeitwerk::GemLoader < ::Zeitwerk::Loader
|
164
|
+
# @return [GemLoader] a new instance of GemLoader
|
165
|
+
#
|
166
|
+
# source://zeitwerk//lib/zeitwerk/gem_loader.rb#19
|
167
|
+
def initialize(root_file, namespace:, warn_on_extra_files:); end
|
168
|
+
|
169
|
+
# source://zeitwerk//lib/zeitwerk/gem_loader.rb#34
|
170
|
+
def setup; end
|
171
|
+
|
172
|
+
private
|
173
|
+
|
174
|
+
# source://zeitwerk//lib/zeitwerk/gem_loader.rb#42
|
175
|
+
def warn_on_extra_files; end
|
176
|
+
|
177
|
+
class << self
|
178
|
+
# @private
|
179
|
+
#
|
180
|
+
# source://zeitwerk//lib/zeitwerk/gem_loader.rb#14
|
181
|
+
def __new(root_file, namespace:, warn_on_extra_files:); end
|
182
|
+
|
183
|
+
private
|
184
|
+
|
185
|
+
def new(*_arg0); end
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
189
|
+
# source://zeitwerk//lib/zeitwerk/inflector.rb#4
|
190
|
+
class Zeitwerk::Inflector
|
191
|
+
# Very basic snake case -> camel case conversion.
|
192
|
+
#
|
193
|
+
# inflector = Zeitwerk::Inflector.new
|
194
|
+
# inflector.camelize("post", ...) # => "Post"
|
195
|
+
# inflector.camelize("users_controller", ...) # => "UsersController"
|
196
|
+
# inflector.camelize("api", ...) # => "Api"
|
197
|
+
#
|
198
|
+
# Takes into account hard-coded mappings configured with `inflect`.
|
199
|
+
#
|
200
|
+
# source://zeitwerk//lib/zeitwerk/inflector.rb#15
|
201
|
+
def camelize(basename, _abspath); end
|
202
|
+
|
203
|
+
# Configures hard-coded inflections:
|
204
|
+
#
|
205
|
+
# inflector = Zeitwerk::Inflector.new
|
206
|
+
# inflector.inflect(
|
207
|
+
# "html_parser" => "HTMLParser",
|
208
|
+
# "mysql_adapter" => "MySQLAdapter"
|
209
|
+
# )
|
210
|
+
#
|
211
|
+
# inflector.camelize("html_parser", abspath) # => "HTMLParser"
|
212
|
+
# inflector.camelize("mysql_adapter", abspath) # => "MySQLAdapter"
|
213
|
+
# inflector.camelize("users_controller", abspath) # => "UsersController"
|
214
|
+
#
|
215
|
+
# source://zeitwerk//lib/zeitwerk/inflector.rb#32
|
216
|
+
def inflect(inflections); end
|
217
|
+
|
218
|
+
private
|
219
|
+
|
220
|
+
# Hard-coded basename to constant name user maps that override the default
|
221
|
+
# inflection logic.
|
222
|
+
#
|
223
|
+
# source://zeitwerk//lib/zeitwerk/inflector.rb#42
|
224
|
+
def overrides; end
|
225
|
+
end
|
226
|
+
|
227
|
+
# This is a private module.
|
228
|
+
#
|
229
|
+
# source://zeitwerk//lib/zeitwerk/internal.rb#4
|
230
|
+
module Zeitwerk::Internal
|
231
|
+
# source://zeitwerk//lib/zeitwerk/internal.rb#5
|
232
|
+
def internal(method_name); end
|
233
|
+
end
|
234
|
+
|
235
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#7
|
236
|
+
class Zeitwerk::Loader
|
237
|
+
include ::Zeitwerk::RealModName
|
238
|
+
include ::Zeitwerk::Loader::Callbacks
|
239
|
+
include ::Zeitwerk::Loader::Helpers
|
240
|
+
include ::Zeitwerk::Loader::Config
|
241
|
+
include ::Zeitwerk::Loader::EagerLoad
|
242
|
+
extend ::Zeitwerk::Internal
|
243
|
+
extend ::Zeitwerk::RealModName
|
244
|
+
|
245
|
+
# @return [Loader] a new instance of Loader
|
246
|
+
#
|
247
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#100
|
248
|
+
def initialize; end
|
249
|
+
|
250
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#42
|
251
|
+
def __autoloaded_dirs; end
|
252
|
+
|
253
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#32
|
254
|
+
def __autoloads; end
|
255
|
+
|
256
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#78
|
257
|
+
def __namespace_dirs; end
|
258
|
+
|
259
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#344
|
260
|
+
def __shadowed_file?(file); end
|
261
|
+
|
262
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#89
|
263
|
+
def __shadowed_files; end
|
264
|
+
|
265
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#60
|
266
|
+
def __to_unload; end
|
267
|
+
|
268
|
+
# Returns a hash that maps the absolute paths of the managed files and
|
269
|
+
# directories to their respective expected constant paths.
|
270
|
+
#
|
271
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#238
|
272
|
+
def all_expected_cpaths; end
|
273
|
+
|
274
|
+
# @raise [Zeitwerk::Error]
|
275
|
+
#
|
276
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#268
|
277
|
+
def cpath_expected_at(path); end
|
278
|
+
|
279
|
+
# Unloads all loaded code, and calls setup again so that the loader is able
|
280
|
+
# to pick any changes in the file system.
|
281
|
+
#
|
282
|
+
# This method is not thread-safe, please see how this can be achieved by
|
283
|
+
# client code in the README of the project.
|
284
|
+
#
|
285
|
+
# @raise [Zeitwerk::Error]
|
286
|
+
#
|
287
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#224
|
288
|
+
def reload; end
|
289
|
+
|
290
|
+
# Sets autoloads in the root namespaces.
|
291
|
+
#
|
292
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#120
|
293
|
+
def setup; end
|
294
|
+
|
295
|
+
# Removes loaded constants and configured autoloads.
|
296
|
+
#
|
297
|
+
# The objects the constants stored are no longer reachable through them. In
|
298
|
+
# addition, since said objects are normally not referenced from anywhere
|
299
|
+
# else, they are eligible for garbage collection, which would effectively
|
300
|
+
# unload them.
|
301
|
+
#
|
302
|
+
# This method is public but undocumented. Main interface is `reload`, which
|
303
|
+
# means `unload` + `setup`. This one is available to be used together with
|
304
|
+
# `unregister`, which is undocumented too.
|
305
|
+
#
|
306
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#146
|
307
|
+
def unload; end
|
308
|
+
|
309
|
+
# Says if the given constant path would be unloaded on reload. This
|
310
|
+
# predicate returns `false` if reloading is disabled.
|
311
|
+
#
|
312
|
+
# @return [Boolean]
|
313
|
+
#
|
314
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#319
|
315
|
+
def unloadable_cpath?(cpath); end
|
316
|
+
|
317
|
+
# Returns an array with the constant paths that would be unloaded on reload.
|
318
|
+
# This predicate returns an empty array if reloading is disabled.
|
319
|
+
#
|
320
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#327
|
321
|
+
def unloadable_cpaths; end
|
322
|
+
|
323
|
+
# This is a dangerous method.
|
324
|
+
#
|
325
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#335
|
326
|
+
def unregister; end
|
327
|
+
|
328
|
+
private
|
329
|
+
|
330
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#491
|
331
|
+
def autoload_file(cref, file); end
|
332
|
+
|
333
|
+
# @return [Boolean]
|
334
|
+
#
|
335
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#544
|
336
|
+
def autoload_path_set_by_me_for?(cref); end
|
337
|
+
|
338
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#462
|
339
|
+
def autoload_subdir(cref, subdir); end
|
340
|
+
|
341
|
+
# We keep track of autoloaded directories to remove them from the registry
|
342
|
+
# at the end of eager loading.
|
343
|
+
#
|
344
|
+
# Files are removed as they are autoloaded, but directories need to wait due
|
345
|
+
# to concurrency (see why in Zeitwerk::Loader::Callbacks#on_dir_autoloaded).
|
346
|
+
#
|
347
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#42
|
348
|
+
def autoloaded_dirs; end
|
349
|
+
|
350
|
+
# Maps absolute paths for which an autoload has been set ---and not
|
351
|
+
# executed--- to their corresponding Zeitwerk::Cref object.
|
352
|
+
#
|
353
|
+
# "/Users/fxn/blog/app/models/user.rb" => #<Zeitwerk::Cref:... @mod=Object, @cname=:User, ...>,
|
354
|
+
# "/Users/fxn/blog/app/models/hotel/pricing.rb" => #<Zeitwerk::Cref:... @mod=Hotel, @cname=:Pricing, ...>,
|
355
|
+
# ...
|
356
|
+
#
|
357
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#32
|
358
|
+
def autoloads; end
|
359
|
+
|
360
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#523
|
361
|
+
def define_autoload(cref, abspath); end
|
362
|
+
|
363
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#444
|
364
|
+
def define_autoloads_for_dir(dir, parent); end
|
365
|
+
|
366
|
+
# Returns the value of attribute dirs_autoload_monitor.
|
367
|
+
#
|
368
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#97
|
369
|
+
def dirs_autoload_monitor; end
|
370
|
+
|
371
|
+
# Returns the value of attribute mutex.
|
372
|
+
#
|
373
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#93
|
374
|
+
def mutex; end
|
375
|
+
|
376
|
+
# Maps namespace constant paths to their respective directories.
|
377
|
+
#
|
378
|
+
# For example, given this mapping:
|
379
|
+
#
|
380
|
+
# "Admin" => [
|
381
|
+
# "/Users/fxn/blog/app/controllers/admin",
|
382
|
+
# "/Users/fxn/blog/app/models/admin",
|
383
|
+
# ...
|
384
|
+
# ]
|
385
|
+
#
|
386
|
+
# when `Admin` gets defined we know that it plays the role of a namespace
|
387
|
+
# and that its children are spread over those directories. We'll visit them
|
388
|
+
# to set up the corresponding autoloads.
|
389
|
+
#
|
390
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#78
|
391
|
+
def namespace_dirs; end
|
392
|
+
|
393
|
+
# `dir` is the directory that would have autovivified a namespace. `file` is
|
394
|
+
# the file where we've found the namespace is explicitly defined.
|
395
|
+
#
|
396
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#512
|
397
|
+
def promote_namespace_from_implicit_to_explicit(dir:, file:, cref:); end
|
398
|
+
|
399
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#558
|
400
|
+
def raise_if_conflicting_directory(dir); end
|
401
|
+
|
402
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#553
|
403
|
+
def register_explicit_namespace(cpath); end
|
404
|
+
|
405
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#582
|
406
|
+
def run_on_unload_callbacks(cpath, value, abspath); end
|
407
|
+
|
408
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#344
|
409
|
+
def shadowed_file?(file); end
|
410
|
+
|
411
|
+
# A shadowed file is a file managed by this loader that is ignored when
|
412
|
+
# setting autoloads because its matching constant is already taken.
|
413
|
+
#
|
414
|
+
# This private set is populated as we descend. For example, if the loader
|
415
|
+
# has only scanned the top-level, `shadowed_files` does not have shadowed
|
416
|
+
# files that may exist deep in the project tree yet.
|
417
|
+
#
|
418
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#89
|
419
|
+
def shadowed_files; end
|
420
|
+
|
421
|
+
# Stores metadata needed for unloading. Its entries look like this:
|
422
|
+
#
|
423
|
+
# "Admin::Role" => [
|
424
|
+
# ".../admin/role.rb",
|
425
|
+
# #<Zeitwerk::Cref:... @mod=Admin, @cname=:Role, ...>
|
426
|
+
# ]
|
427
|
+
#
|
428
|
+
# The cpath as key helps implementing unloadable_cpath? The file name is
|
429
|
+
# stored in order to be able to delete it from $LOADED_FEATURES, and the
|
430
|
+
# cref is used to remove the constant from the parent class or module.
|
431
|
+
#
|
432
|
+
# If reloading is enabled, this hash is filled as constants are autoloaded
|
433
|
+
# or eager loaded. Otherwise, the collection remains empty.
|
434
|
+
#
|
435
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#60
|
436
|
+
def to_unload; end
|
437
|
+
|
438
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#589
|
439
|
+
def unload_autoload(cref); end
|
440
|
+
|
441
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#595
|
442
|
+
def unload_cref(cref); end
|
443
|
+
|
444
|
+
class << self
|
445
|
+
# Returns an array with the absolute paths of the root directories of all
|
446
|
+
# registered loaders. This is a read-only collection.
|
447
|
+
#
|
448
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#438
|
449
|
+
def all_dirs; end
|
450
|
+
|
451
|
+
# Returns the value of attribute default_logger.
|
452
|
+
#
|
453
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#354
|
454
|
+
def default_logger; end
|
455
|
+
|
456
|
+
# Sets the attribute default_logger
|
457
|
+
#
|
458
|
+
# @param value the value to set the attribute default_logger to.
|
459
|
+
#
|
460
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#354
|
461
|
+
def default_logger=(_arg0); end
|
462
|
+
|
463
|
+
# Broadcasts `eager_load` to all loaders. Those that have not been setup
|
464
|
+
# are skipped.
|
465
|
+
#
|
466
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#410
|
467
|
+
def eager_load_all; end
|
468
|
+
|
469
|
+
# Broadcasts `eager_load_namespace` to all loaders. Those that have not
|
470
|
+
# been setup are skipped.
|
471
|
+
#
|
472
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#424
|
473
|
+
def eager_load_namespace(mod); end
|
474
|
+
|
475
|
+
# This is a shortcut for
|
476
|
+
#
|
477
|
+
# require "zeitwerk"
|
478
|
+
#
|
479
|
+
# loader = Zeitwerk::Loader.new
|
480
|
+
# loader.tag = File.basename(__FILE__, ".rb")
|
481
|
+
# loader.inflector = Zeitwerk::GemInflector.new(__FILE__)
|
482
|
+
# loader.push_dir(__dir__)
|
483
|
+
#
|
484
|
+
# except that this method returns the same object in subsequent calls from
|
485
|
+
# the same file, in the unlikely case the gem wants to be able to reload.
|
486
|
+
#
|
487
|
+
# This method returns a subclass of Zeitwerk::Loader, but the exact type
|
488
|
+
# is private, client code can only rely on the interface.
|
489
|
+
#
|
490
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#372
|
491
|
+
def for_gem(warn_on_extra_files: T.unsafe(nil)); end
|
492
|
+
|
493
|
+
# This is a shortcut for
|
494
|
+
#
|
495
|
+
# require "zeitwerk"
|
496
|
+
#
|
497
|
+
# loader = Zeitwerk::Loader.new
|
498
|
+
# loader.tag = namespace.name + "-" + File.basename(__FILE__, ".rb")
|
499
|
+
# loader.inflector = Zeitwerk::GemInflector.new(__FILE__)
|
500
|
+
# loader.push_dir(__dir__, namespace: namespace)
|
501
|
+
#
|
502
|
+
# except that this method returns the same object in subsequent calls from
|
503
|
+
# the same file, in the unlikely case the gem wants to be able to reload.
|
504
|
+
#
|
505
|
+
# This method returns a subclass of Zeitwerk::Loader, but the exact type
|
506
|
+
# is private, client code can only rely on the interface.
|
507
|
+
#
|
508
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#393
|
509
|
+
def for_gem_extension(namespace); end
|
510
|
+
end
|
511
|
+
end
|
512
|
+
|
513
|
+
# source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#3
|
514
|
+
module Zeitwerk::Loader::Callbacks
|
515
|
+
include ::Zeitwerk::RealModName
|
516
|
+
extend ::Zeitwerk::Internal
|
517
|
+
|
518
|
+
# source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#40
|
519
|
+
def __on_dir_autoloaded(dir); end
|
520
|
+
|
521
|
+
# source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#10
|
522
|
+
def __on_file_autoloaded(file); end
|
523
|
+
|
524
|
+
# Invoked when a class or module is created or reopened, either from the
|
525
|
+
# tracer or from module autovivification. If the namespace has matching
|
526
|
+
# subdirectories, we descend into them now.
|
527
|
+
#
|
528
|
+
# @private
|
529
|
+
#
|
530
|
+
# source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#80
|
531
|
+
def on_namespace_loaded(namespace); end
|
532
|
+
|
533
|
+
private
|
534
|
+
|
535
|
+
# source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#40
|
536
|
+
def on_dir_autoloaded(dir); end
|
537
|
+
|
538
|
+
# source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#10
|
539
|
+
def on_file_autoloaded(file); end
|
540
|
+
|
541
|
+
# source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#91
|
542
|
+
def run_on_load_callbacks(cpath, value, abspath); end
|
543
|
+
end
|
544
|
+
|
545
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#6
|
546
|
+
module Zeitwerk::Loader::Config
|
547
|
+
include ::Zeitwerk::RealModName
|
548
|
+
extend ::Zeitwerk::Internal
|
549
|
+
|
550
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#86
|
551
|
+
def initialize; end
|
552
|
+
|
553
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#296
|
554
|
+
def __ignores?(abspath); end
|
555
|
+
|
556
|
+
def __roots; end
|
557
|
+
|
558
|
+
# Configure directories or glob patterns to be collapsed.
|
559
|
+
#
|
560
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#216
|
561
|
+
def collapse(*glob_patterns); end
|
562
|
+
|
563
|
+
# If `namespaces` is falsey (default), returns an array with the absolute
|
564
|
+
# paths of the root directories as strings. If truthy, returns a hash table
|
565
|
+
# instead. Keys are the absolute paths of the root directories as strings,
|
566
|
+
# values are their corresponding namespaces, class or module objects.
|
567
|
+
#
|
568
|
+
# If `ignored` is falsey (default), ignored root directories are filtered out.
|
569
|
+
#
|
570
|
+
# These are read-only collections, please add to them with `push_dir`.
|
571
|
+
#
|
572
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#156
|
573
|
+
def dirs(namespaces: T.unsafe(nil), ignored: T.unsafe(nil)); end
|
574
|
+
|
575
|
+
# Let eager load ignore the given files or directories. The constants defined
|
576
|
+
# in those files are still autoloadable.
|
577
|
+
#
|
578
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#198
|
579
|
+
def do_not_eager_load(*paths); end
|
580
|
+
|
581
|
+
# You need to call this method before setup in order to be able to reload.
|
582
|
+
# There is no way to undo this, either you want to reload or you don't.
|
583
|
+
#
|
584
|
+
# @raise [Zeitwerk::Error]
|
585
|
+
#
|
586
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#177
|
587
|
+
def enable_reloading; end
|
588
|
+
|
589
|
+
# Configure files, directories, or glob patterns to be totally ignored.
|
590
|
+
#
|
591
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#205
|
592
|
+
def ignore(*glob_patterns); end
|
593
|
+
|
594
|
+
# Returns the value of attribute inflector.
|
595
|
+
#
|
596
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#11
|
597
|
+
def inflector; end
|
598
|
+
|
599
|
+
# Sets the attribute inflector
|
600
|
+
#
|
601
|
+
# @param value the value to set the attribute inflector to.
|
602
|
+
#
|
603
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#11
|
604
|
+
def inflector=(_arg0); end
|
605
|
+
|
606
|
+
# Logs to `$stdout`, handy shortcut for debugging.
|
607
|
+
#
|
608
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#288
|
609
|
+
def log!; end
|
610
|
+
|
611
|
+
# Returns the value of attribute logger.
|
612
|
+
#
|
613
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#14
|
614
|
+
def logger; end
|
615
|
+
|
616
|
+
# Sets the attribute logger
|
617
|
+
#
|
618
|
+
# @param value the value to set the attribute logger to.
|
619
|
+
#
|
620
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#14
|
621
|
+
def logger=(_arg0); end
|
622
|
+
|
623
|
+
# Configure a block to be invoked once a certain constant path is loaded.
|
624
|
+
# Supports multiple callbacks, and if there are many, they are executed in
|
625
|
+
# the order in which they were defined.
|
626
|
+
#
|
627
|
+
# loader.on_load("SomeApiClient") do |klass, _abspath|
|
628
|
+
# klass.endpoint = "https://api.dev"
|
629
|
+
# end
|
630
|
+
#
|
631
|
+
# Can also be configured for any constant loaded:
|
632
|
+
#
|
633
|
+
# loader.on_load do |cpath, value, abspath|
|
634
|
+
# # ...
|
635
|
+
# end
|
636
|
+
#
|
637
|
+
# @raise [TypeError]
|
638
|
+
#
|
639
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#252
|
640
|
+
def on_load(cpath = T.unsafe(nil), &block); end
|
641
|
+
|
642
|
+
# Configure a block to be called after setup and on each reload.
|
643
|
+
# If setup was already done, the block runs immediately.
|
644
|
+
#
|
645
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#228
|
646
|
+
def on_setup(&block); end
|
647
|
+
|
648
|
+
# Configure a block to be invoked right before a certain constant is removed.
|
649
|
+
# Supports multiple callbacks, and if there are many, they are executed in the
|
650
|
+
# order in which they were defined.
|
651
|
+
#
|
652
|
+
# loader.on_unload("Country") do |klass, _abspath|
|
653
|
+
# klass.clear_cache
|
654
|
+
# end
|
655
|
+
#
|
656
|
+
# Can also be configured for any removed constant:
|
657
|
+
#
|
658
|
+
# loader.on_unload do |cpath, value, abspath|
|
659
|
+
# # ...
|
660
|
+
# end
|
661
|
+
#
|
662
|
+
# @raise [TypeError]
|
663
|
+
#
|
664
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#277
|
665
|
+
def on_unload(cpath = T.unsafe(nil), &block); end
|
666
|
+
|
667
|
+
# Pushes `path` to the list of root directories.
|
668
|
+
#
|
669
|
+
# Raises `Zeitwerk::Error` if `path` does not exist, or if another loader in
|
670
|
+
# the same process already manages that directory or one of its ascendants or
|
671
|
+
# descendants.
|
672
|
+
#
|
673
|
+
# @raise [Zeitwerk::Error]
|
674
|
+
#
|
675
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#111
|
676
|
+
def push_dir(path, namespace: T.unsafe(nil)); end
|
677
|
+
|
678
|
+
# @return [Boolean]
|
679
|
+
#
|
680
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#190
|
681
|
+
def reloading_enabled?; end
|
682
|
+
|
683
|
+
# Returns the loader's tag.
|
684
|
+
#
|
685
|
+
# Implemented as a method instead of via attr_reader for symmetry with the
|
686
|
+
# writer below.
|
687
|
+
#
|
688
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#135
|
689
|
+
def tag; end
|
690
|
+
|
691
|
+
# Sets a tag for the loader, useful for logging.
|
692
|
+
#
|
693
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#142
|
694
|
+
def tag=(tag); end
|
695
|
+
|
696
|
+
private
|
697
|
+
|
698
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#314
|
699
|
+
def actual_roots; end
|
700
|
+
|
701
|
+
# @return [Boolean]
|
702
|
+
#
|
703
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#339
|
704
|
+
def collapse?(dir); end
|
705
|
+
|
706
|
+
# The actual collection of absolute directory names at the time the collapse
|
707
|
+
# glob patterns were expanded. Computed on setup, and recomputed on reload.
|
708
|
+
#
|
709
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#57
|
710
|
+
def collapse_dirs; end
|
711
|
+
|
712
|
+
# Absolute paths of directories or glob patterns to be collapsed.
|
713
|
+
#
|
714
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#50
|
715
|
+
def collapse_glob_patterns; end
|
716
|
+
|
717
|
+
# Absolute paths of files or directories not to be eager loaded.
|
718
|
+
#
|
719
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#63
|
720
|
+
def eager_load_exclusions; end
|
721
|
+
|
722
|
+
# @return [Boolean]
|
723
|
+
#
|
724
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#326
|
725
|
+
def excluded_from_eager_load?(abspath); end
|
726
|
+
|
727
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#349
|
728
|
+
def expand_glob_patterns(glob_patterns); end
|
729
|
+
|
730
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#344
|
731
|
+
def expand_paths(paths); end
|
732
|
+
|
733
|
+
# Absolute paths of files, directories, or glob patterns to be totally
|
734
|
+
# ignored.
|
735
|
+
#
|
736
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#36
|
737
|
+
def ignored_glob_patterns; end
|
738
|
+
|
739
|
+
# @return [Boolean]
|
740
|
+
#
|
741
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#309
|
742
|
+
def ignored_path?(abspath); end
|
743
|
+
|
744
|
+
# The actual collection of absolute file and directory names at the time the
|
745
|
+
# ignored glob patterns were expanded. Computed on setup, and recomputed on
|
746
|
+
# reload.
|
747
|
+
#
|
748
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#44
|
749
|
+
def ignored_paths; end
|
750
|
+
|
751
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#296
|
752
|
+
def ignores?(abspath); end
|
753
|
+
|
754
|
+
# User-oriented callbacks to be fired when a constant is loaded.
|
755
|
+
#
|
756
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#76
|
757
|
+
def on_load_callbacks; end
|
758
|
+
|
759
|
+
# User-oriented callbacks to be fired on setup and on reload.
|
760
|
+
#
|
761
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#69
|
762
|
+
def on_setup_callbacks; end
|
763
|
+
|
764
|
+
# User-oriented callbacks to be fired before constants are removed.
|
765
|
+
#
|
766
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#83
|
767
|
+
def on_unload_callbacks; end
|
768
|
+
|
769
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#361
|
770
|
+
def recompute_collapse_dirs; end
|
771
|
+
|
772
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#356
|
773
|
+
def recompute_ignored_paths; end
|
774
|
+
|
775
|
+
# @return [Boolean]
|
776
|
+
#
|
777
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#321
|
778
|
+
def root_dir?(dir); end
|
779
|
+
|
780
|
+
# Absolute paths of the root directories, mapped to their respective root namespaces:
|
781
|
+
#
|
782
|
+
# "/Users/fxn/blog/app/channels" => Object,
|
783
|
+
# "/Users/fxn/blog/app/adapters" => ActiveJob::QueueAdapters,
|
784
|
+
# ...
|
785
|
+
#
|
786
|
+
# Stored in a hash to preserve order, easily handle duplicates, and have a
|
787
|
+
# fast lookup by directory.
|
788
|
+
#
|
789
|
+
# This is a private collection maintained by the loader. The public
|
790
|
+
# interface for it is `push_dir` and `dirs`.
|
791
|
+
#
|
792
|
+
# source://zeitwerk//lib/zeitwerk/loader/config.rb#29
|
793
|
+
def roots; end
|
794
|
+
end
|
795
|
+
|
796
|
+
# source://zeitwerk//lib/zeitwerk/loader/eager_load.rb#1
|
797
|
+
module Zeitwerk::Loader::EagerLoad
|
798
|
+
# Eager loads all files in the root directories, recursively. Files do not
|
799
|
+
# need to be in `$LOAD_PATH`, absolute file names are used. Ignored and
|
800
|
+
# shadowed files are not eager loaded. You can opt-out specifically in
|
801
|
+
# specific files and directories with `do_not_eager_load`, and that can be
|
802
|
+
# overridden passing `force: true`.
|
803
|
+
#
|
804
|
+
# source://zeitwerk//lib/zeitwerk/loader/eager_load.rb#9
|
805
|
+
def eager_load(force: T.unsafe(nil)); end
|
806
|
+
|
807
|
+
# @raise [Zeitwerk::SetupRequired]
|
808
|
+
#
|
809
|
+
# source://zeitwerk//lib/zeitwerk/loader/eager_load.rb#32
|
810
|
+
def eager_load_dir(path); end
|
811
|
+
|
812
|
+
# @raise [Zeitwerk::SetupRequired]
|
813
|
+
#
|
814
|
+
# source://zeitwerk//lib/zeitwerk/loader/eager_load.rb#74
|
815
|
+
def eager_load_namespace(mod); end
|
816
|
+
|
817
|
+
# Loads the given Ruby file.
|
818
|
+
#
|
819
|
+
# Raises if the argument is ignored, shadowed, or not managed by the receiver.
|
820
|
+
#
|
821
|
+
# The method is implemented as `constantize` for files, in a sense, to be able
|
822
|
+
# to descend orderly and make sure the file is loadable.
|
823
|
+
#
|
824
|
+
# @raise [Zeitwerk::Error]
|
825
|
+
#
|
826
|
+
# source://zeitwerk//lib/zeitwerk/loader/eager_load.rb#116
|
827
|
+
def load_file(path); end
|
828
|
+
|
829
|
+
private
|
830
|
+
|
831
|
+
# The caller is responsible for making sure `namespace` is the namespace that
|
832
|
+
# corresponds to `dir`.
|
833
|
+
#
|
834
|
+
# source://zeitwerk//lib/zeitwerk/loader/eager_load.rb#160
|
835
|
+
def actual_eager_load_dir(dir, namespace, force: T.unsafe(nil)); end
|
836
|
+
|
837
|
+
# In order to invoke this method, the caller has to ensure `child` is a
|
838
|
+
# strict namespace descendant of `root_namespace`.
|
839
|
+
#
|
840
|
+
# source://zeitwerk//lib/zeitwerk/loader/eager_load.rb#193
|
841
|
+
def eager_load_child_namespace(child, child_name, root_dir, root_namespace); end
|
842
|
+
end
|
843
|
+
|
844
|
+
# source://zeitwerk//lib/zeitwerk/loader/helpers.rb#3
|
845
|
+
module Zeitwerk::Loader::Helpers
|
846
|
+
private
|
847
|
+
|
848
|
+
# @raise [Zeitwerk::NameError]
|
849
|
+
#
|
850
|
+
# source://zeitwerk//lib/zeitwerk/loader/helpers.rb#110
|
851
|
+
def cname_for(basename, abspath); end
|
852
|
+
|
853
|
+
# @return [Boolean]
|
854
|
+
#
|
855
|
+
# source://zeitwerk//lib/zeitwerk/loader/helpers.rb#85
|
856
|
+
def dir?(path); end
|
857
|
+
|
858
|
+
# Looks for a Ruby file using breadth-first search. This type of search is
|
859
|
+
# important to list as less directories as possible and return fast in the
|
860
|
+
# common case in which there are Ruby files.
|
861
|
+
#
|
862
|
+
# @return [Boolean]
|
863
|
+
#
|
864
|
+
# source://zeitwerk//lib/zeitwerk/loader/helpers.rb#56
|
865
|
+
def has_at_least_one_ruby_file?(dir); end
|
866
|
+
|
867
|
+
# @return [Boolean]
|
868
|
+
#
|
869
|
+
# source://zeitwerk//lib/zeitwerk/loader/helpers.rb#90
|
870
|
+
def hidden?(basename); end
|
871
|
+
|
872
|
+
# source://zeitwerk//lib/zeitwerk/loader/helpers.rb#7
|
873
|
+
def log(message); end
|
874
|
+
|
875
|
+
# source://zeitwerk//lib/zeitwerk/loader/helpers.rb#15
|
876
|
+
def ls(dir); end
|
877
|
+
|
878
|
+
# @return [Boolean]
|
879
|
+
#
|
880
|
+
# source://zeitwerk//lib/zeitwerk/loader/helpers.rb#80
|
881
|
+
def ruby?(path); end
|
882
|
+
|
883
|
+
# source://zeitwerk//lib/zeitwerk/loader/helpers.rb#95
|
884
|
+
def walk_up(abspath); end
|
885
|
+
end
|
886
|
+
|
887
|
+
# --- Inflection --------------------------------------------------------------------------------
|
888
|
+
#
|
889
|
+
# source://zeitwerk//lib/zeitwerk/loader/helpers.rb#105
|
890
|
+
module Zeitwerk::Loader::Helpers::CNAME_VALIDATOR; end
|
891
|
+
|
892
|
+
# source://zeitwerk//lib/zeitwerk/loader.rb#21
|
893
|
+
Zeitwerk::Loader::MUTEX = T.let(T.unsafe(nil), Thread::Mutex)
|
894
|
+
|
895
|
+
# source://zeitwerk//lib/zeitwerk/error.rb#13
|
896
|
+
class Zeitwerk::NameError < ::NameError; end
|
897
|
+
|
898
|
+
# source://zeitwerk//lib/zeitwerk/null_inflector.rb#1
|
899
|
+
class Zeitwerk::NullInflector
|
900
|
+
# source://zeitwerk//lib/zeitwerk/null_inflector.rb#2
|
901
|
+
def camelize(basename, _abspath); end
|
902
|
+
end
|
903
|
+
|
904
|
+
# source://zeitwerk//lib/zeitwerk/real_mod_name.rb#3
|
905
|
+
module Zeitwerk::RealModName
|
906
|
+
# source://zeitwerk//lib/zeitwerk/real_mod_name.rb#14
|
907
|
+
def real_mod_name(mod); end
|
908
|
+
end
|
909
|
+
|
910
|
+
# source://zeitwerk//lib/zeitwerk/real_mod_name.rb#4
|
911
|
+
Zeitwerk::RealModName::UNBOUND_METHOD_MODULE_NAME = T.let(T.unsafe(nil), UnboundMethod)
|
912
|
+
|
913
|
+
# source://zeitwerk//lib/zeitwerk/registry.rb#4
|
914
|
+
module Zeitwerk::Registry
|
915
|
+
class << self
|
916
|
+
# Maps absolute paths to the loaders responsible for them.
|
917
|
+
#
|
918
|
+
# This information is used by our decorated `Kernel#require` to be able to
|
919
|
+
# invoke callbacks and autovivify modules.
|
920
|
+
#
|
921
|
+
# @private
|
922
|
+
#
|
923
|
+
# source://zeitwerk//lib/zeitwerk/registry.rb#26
|
924
|
+
def autoloads; end
|
925
|
+
|
926
|
+
# Registers gem loaders to let `for_gem` be idempotent in case of reload.
|
927
|
+
#
|
928
|
+
# @private
|
929
|
+
#
|
930
|
+
# source://zeitwerk//lib/zeitwerk/registry.rb#17
|
931
|
+
def gem_loaders_by_root_file; end
|
932
|
+
|
933
|
+
# @private
|
934
|
+
# @return [Boolean]
|
935
|
+
#
|
936
|
+
# source://zeitwerk//lib/zeitwerk/registry.rb#113
|
937
|
+
def inception?(cpath, registered_by_loader = T.unsafe(nil)); end
|
938
|
+
|
939
|
+
# This hash table addresses an edge case in which an autoload is ignored.
|
940
|
+
#
|
941
|
+
# For example, let's suppose we want to autoload in a gem like this:
|
942
|
+
#
|
943
|
+
# # lib/my_gem.rb
|
944
|
+
# loader = Zeitwerk::Loader.new
|
945
|
+
# loader.push_dir(__dir__)
|
946
|
+
# loader.setup
|
947
|
+
#
|
948
|
+
# module MyGem
|
949
|
+
# end
|
950
|
+
#
|
951
|
+
# if you require "my_gem", as Bundler would do, this happens while setting
|
952
|
+
# up autoloads:
|
953
|
+
#
|
954
|
+
# 1. Object.autoload?(:MyGem) returns `nil` because the autoload for
|
955
|
+
# the constant is issued by Zeitwerk while the same file is being
|
956
|
+
# required.
|
957
|
+
# 2. The constant `MyGem` is undefined while setup runs.
|
958
|
+
#
|
959
|
+
# Therefore, a directory `lib/my_gem` would autovivify a module according to
|
960
|
+
# the existing information. But that would be wrong.
|
961
|
+
#
|
962
|
+
# To overcome this fundamental limitation, we keep track of the constant
|
963
|
+
# paths that are in this situation ---in the example above, "MyGem"--- and
|
964
|
+
# take this collection into account for the autovivification logic.
|
965
|
+
#
|
966
|
+
# Note that you cannot generally address this by moving the setup code
|
967
|
+
# below the constant definition, because we want libraries to be able to
|
968
|
+
# use managed constants in the module body:
|
969
|
+
#
|
970
|
+
# module MyGem
|
971
|
+
# include MyConcern
|
972
|
+
# end
|
973
|
+
#
|
974
|
+
# @private
|
975
|
+
#
|
976
|
+
# source://zeitwerk//lib/zeitwerk/registry.rb#65
|
977
|
+
def inceptions; end
|
978
|
+
|
979
|
+
# @private
|
980
|
+
#
|
981
|
+
# source://zeitwerk//lib/zeitwerk/registry.rb#124
|
982
|
+
def loader_for(path); end
|
983
|
+
|
984
|
+
# This method returns always a loader, the same instance for the same root
|
985
|
+
# file. That is how Zeitwerk::Loader.for_gem is idempotent.
|
986
|
+
#
|
987
|
+
# @private
|
988
|
+
#
|
989
|
+
# source://zeitwerk//lib/zeitwerk/registry.rb#89
|
990
|
+
def loader_for_gem(root_file, namespace:, warn_on_extra_files:); end
|
991
|
+
|
992
|
+
# Keeps track of all loaders. Useful to broadcast messages and to prevent
|
993
|
+
# them from being garbage collected.
|
994
|
+
#
|
995
|
+
# @private
|
996
|
+
#
|
997
|
+
# source://zeitwerk//lib/zeitwerk/registry.rb#11
|
998
|
+
def loaders; end
|
999
|
+
|
1000
|
+
# @private
|
1001
|
+
#
|
1002
|
+
# source://zeitwerk//lib/zeitwerk/registry.rb#130
|
1003
|
+
def on_unload(loader); end
|
1004
|
+
|
1005
|
+
# @private
|
1006
|
+
#
|
1007
|
+
# source://zeitwerk//lib/zeitwerk/registry.rb#95
|
1008
|
+
def register_autoload(loader, abspath); end
|
1009
|
+
|
1010
|
+
# @private
|
1011
|
+
#
|
1012
|
+
# source://zeitwerk//lib/zeitwerk/registry.rb#107
|
1013
|
+
def register_inception(cpath, abspath, loader); end
|
1014
|
+
|
1015
|
+
# Registers a loader.
|
1016
|
+
#
|
1017
|
+
# @private
|
1018
|
+
#
|
1019
|
+
# source://zeitwerk//lib/zeitwerk/registry.rb#71
|
1020
|
+
def register_loader(loader); end
|
1021
|
+
|
1022
|
+
# @private
|
1023
|
+
#
|
1024
|
+
# source://zeitwerk//lib/zeitwerk/registry.rb#101
|
1025
|
+
def unregister_autoload(abspath); end
|
1026
|
+
|
1027
|
+
# @private
|
1028
|
+
#
|
1029
|
+
# source://zeitwerk//lib/zeitwerk/registry.rb#77
|
1030
|
+
def unregister_loader(loader); end
|
1031
|
+
end
|
1032
|
+
end
|
1033
|
+
|
1034
|
+
# source://zeitwerk//lib/zeitwerk/error.rb#7
|
1035
|
+
class Zeitwerk::ReloadingDisabledError < ::Zeitwerk::Error
|
1036
|
+
# @return [ReloadingDisabledError] a new instance of ReloadingDisabledError
|
1037
|
+
#
|
1038
|
+
# source://zeitwerk//lib/zeitwerk/error.rb#8
|
1039
|
+
def initialize; end
|
1040
|
+
end
|
1041
|
+
|
1042
|
+
# source://zeitwerk//lib/zeitwerk/error.rb#16
|
1043
|
+
class Zeitwerk::SetupRequired < ::Zeitwerk::Error
|
1044
|
+
# @return [SetupRequired] a new instance of SetupRequired
|
1045
|
+
#
|
1046
|
+
# source://zeitwerk//lib/zeitwerk/error.rb#17
|
1047
|
+
def initialize; end
|
1048
|
+
end
|
1049
|
+
|
1050
|
+
# source://zeitwerk//lib/zeitwerk/version.rb#4
|
1051
|
+
Zeitwerk::VERSION = T.let(T.unsafe(nil), String)
|