onload 1.0.2 → 1.0.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 13f19bdf6088329ac7349d6655fa119c3f3b963187e1b83ff764eb7711483e36
4
- data.tar.gz: 68262832b33e15d78b292a20d09769c951625bf35aad3f6a7b863c10f401788a
3
+ metadata.gz: f9da25e881992956871df8379241638cc78561b87d09b9040390b9e7e1331b47
4
+ data.tar.gz: bd7eed8c12d1557af7cfa02c29f3e99e3c60d803980f5f5342ee226f98491fc0
5
5
  SHA512:
6
- metadata.gz: 69c34a1b432cff54b0f4d8179587500b6733c5e9b1cd4832dcb5b924a803c5290ce681dc9a383a75565d79bea6007fd52d3bc2567500947be19eb983c9afff18
7
- data.tar.gz: c120d68e75c811b0757f3c3c393202a6eb706fb75c6dde44b01165baa378b0b96e391a41b25f9e6b79f3436cc3dd0ee715eb2dbf4316d98dc97a840f99540d00
6
+ metadata.gz: 5cd23e59b466a20c66c7cc2bfcffe0f43363ff677d282adc31b5b897edb41b47af83322cfaa821e965d39a3ed563b0a9923acda00525771a763d725137b39a88
7
+ data.tar.gz: 5fa4b2f9e471429675ad855c9e945aeae6fa516e5c1abfd3295e298b3c6929baed89b0e66f8e2b61ad07af05e97ff78ea542195ff7dcdb2adc1e323c3feebe58
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 1.0.4
2
+ * Fix issues with Zeitwerk v2.6.13 and later.
3
+ - Zeitwerk introduced the `Cref` class, which encapsulates a `mod` and `cname`. A number of internal methods used to return both of these things individually; now they are wrapped in `Cref`s.
4
+
5
+ ## 1.0.3
6
+ * Fix Bootsnap issue causing `NoMethodError`.
7
+ - Onload started out using `alias_method` to override certain Zeitwerk and Bootsnap methods. When it was extracted into a gem, I chose to use `Module#prepend` instead. I forgot to convert one of the method calls to `super`, hence the error.
8
+
1
9
  ## 1.0.2
2
10
  * Add support for Rails 7.1.
3
11
  * Add support for Zeitwerk 2.6.12.
@@ -17,7 +17,12 @@ module Kernel
17
17
  # uninitialized, that's why I'm loading this file. Whatevs.
18
18
  loader = Zeitwerk::Registry.loader_for(file)
19
19
  parent, cname = loader.send(:autoloads)[file]
20
- parent.send(:remove_const, cname)
20
+
21
+ if defined?(Zeitwerk::Cref) && parent.is_a?(Zeitwerk::Cref)
22
+ parent.remove
23
+ else
24
+ parent.send(:remove_const, cname)
25
+ end
21
26
 
22
27
  return onload_orig_load(f.outfile, *args)
23
28
  end
@@ -15,7 +15,7 @@ module Onload
15
15
  cached_path = Bootsnap::LoadPathCache.load_path_cache.find(path)
16
16
 
17
17
  if (unprocessed_path = Onload.unprocessed_file_for(cached_path))
18
- return autoload_without_bootsnap(const, unprocessed_path)
18
+ return super(const, unprocessed_path)
19
19
  end
20
20
 
21
21
  super
@@ -11,26 +11,38 @@ module Onload
11
11
  super || Onload.process?(path)
12
12
  end
13
13
 
14
- def autoload_file(parent, cname, file)
15
- if Onload.process?(file)
16
- # Some older versions of Zeitwerk very naïvely try to remove only the
17
- # last 3 characters in an attempt to strip off the .rb file extension,
18
- # while newer ones only remove it if it's actually there. This line is
19
- # necessary to remove the trailing leftover period for older versions,
20
- # and remove the entire extension for newer versions. Although cname
21
- # means "constant name," we use Onload.basename to remove all residual
22
- # file extensions that were left over from the conversion from a file
23
- # name to a cname.
24
- cname = Onload.basename(cname.to_s).to_sym
25
- else
26
- # if there is a corresponding unprocessed file, autoload it instead of
27
- # the .rb file
28
- if (unprocessed_file = Onload.unprocessed_file_for(file))
29
- file = unprocessed_file
14
+ if Zeitwerk::Loader.instance_method(:autoload_file).arity == 2
15
+ def autoload_file(cref, file)
16
+ if !Onload.process?(file)
17
+ if (unprocessed_file = Onload.unprocessed_file_for(file))
18
+ file = unprocessed_file
19
+ end
30
20
  end
21
+
22
+ super
31
23
  end
24
+ else
25
+ def autoload_file(parent, cname, file)
26
+ if Onload.process?(file)
27
+ # Some older versions of Zeitwerk very naïvely try to remove only the
28
+ # last 3 characters in an attempt to strip off the .rb file extension,
29
+ # while newer ones only remove it if it's actually there. This line is
30
+ # necessary to remove the trailing leftover period for older versions,
31
+ # and remove the entire extension for newer versions. Although cname
32
+ # means "constant name," we use Onload.basename to remove all residual
33
+ # file extensions that were left over from the conversion from a file
34
+ # name to a cname.
35
+ cname = Onload.basename(cname.to_s).to_sym
36
+ else
37
+ # if there is a corresponding unprocessed file, autoload it instead of
38
+ # the .rb file
39
+ if (unprocessed_file = Onload.unprocessed_file_for(file))
40
+ file = unprocessed_file
41
+ end
42
+ end
32
43
 
33
- super
44
+ super
45
+ end
34
46
  end
35
47
 
36
48
  # introduced in Zeitwerk v2.6.10
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Onload
4
- VERSION = "1.0.2"
4
+ VERSION = "1.0.4"
5
5
  end