onload 1.0.4 → 1.0.5

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: f9da25e881992956871df8379241638cc78561b87d09b9040390b9e7e1331b47
4
- data.tar.gz: bd7eed8c12d1557af7cfa02c29f3e99e3c60d803980f5f5342ee226f98491fc0
3
+ metadata.gz: 66e3e322ccf2b92d128fb3bf904426cff77ba86e88ec47eb8ba9c5101dd0ae28
4
+ data.tar.gz: 5495ff350b972c47e6c992f744245d12baa57c0929d7878241f6c9a91922f17c
5
5
  SHA512:
6
- metadata.gz: 5cd23e59b466a20c66c7cc2bfcffe0f43363ff677d282adc31b5b897edb41b47af83322cfaa821e965d39a3ed563b0a9923acda00525771a763d725137b39a88
7
- data.tar.gz: 5fa4b2f9e471429675ad855c9e945aeae6fa516e5c1abfd3295e298b3c6929baed89b0e66f8e2b61ad07af05e97ff78ea542195ff7dcdb2adc1e323c3feebe58
6
+ metadata.gz: 1fd824da5c6ee8cd78342b5e0cb945353147970ebe26a4c6e16005bf8245cd5e743223441c76b7ab04216dd1757a8b3925a71b32825402d1f4becf7cbbf488c0
7
+ data.tar.gz: 8f296f7561c97af7ff6863a87fb73c3ef1c2bccb6379ca4aceb5300c13ccde937d17189de93e877c6016ab76a62f12225ce04e2494e77e229f59172c5dfd0de7
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 1.0.5
2
+ * Fix issues with Zeitwerk v2.7.3 and later.
3
+ * Don't attempt to autoload directories.
4
+
1
5
  ## 1.0.4
2
6
  * Fix issues with Zeitwerk v2.6.13 and later.
3
7
  - 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.
@@ -15,7 +15,12 @@ module Kernel
15
15
  # in order to load the resulting file. Otherwise you get an error about
16
16
  # an uninitialized constant, and it's like... yeah, I _know_ it's
17
17
  # uninitialized, that's why I'm loading this file. Whatevs.
18
- loader = Zeitwerk::Registry.loader_for(file)
18
+ loader = if Zeitwerk::Registry.respond_to?(:loader_for)
19
+ Zeitwerk::Registry.loader_for(file)
20
+ else
21
+ Zeitwerk::Registry.autoloads.registered?(file)
22
+ end
23
+
19
24
  parent, cname = loader.send(:autoloads)[file]
20
25
 
21
26
  if defined?(Zeitwerk::Cref) && parent.is_a?(Zeitwerk::Cref)
@@ -3,6 +3,9 @@
3
3
  module Onload
4
4
  module BootsnapAutoloadPatch
5
5
  def autoload(const, path)
6
+ # only autoload files, not directories
7
+ return super if ::File.directory?(path)
8
+
6
9
  # Bootsnap monkeypatches Module.autoload in order to leverage its load
7
10
  # path cache, which effectively converts a relative path into an absolute
8
11
  # one without incurring the cost of searching the load path.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Onload
4
- VERSION = "1.0.4"
4
+ VERSION = "1.0.5"
5
5
  end
@@ -38,5 +38,14 @@ describe HomeController, type: :request do
38
38
  )
39
39
  end
40
40
  end
41
+
42
+ it "supports file shadowing" do
43
+ get "/action_list"
44
+
45
+ expect(response).to have_http_status(:ok)
46
+ expect(response.body).to(
47
+ have_selector("div", text: "LIST ITEM")
48
+ )
49
+ end
41
50
  end
42
51
  end
@@ -0,0 +1 @@
1
+ <div><%= Primer::Alpha::ActionList.new.list %></div>
@@ -11,5 +11,7 @@ module Onload
11
11
  config.autoload_paths << ::File.expand_path(
12
12
  ::File.join(*%w[.. .. .. fixtures]), __dir__
13
13
  )
14
+
15
+ config.autoload_paths << Rails.root.join("lib").to_s
14
16
  end
15
17
  end
@@ -1,3 +1,4 @@
1
1
  Rails.application.routes.draw do
2
- root to: 'home#index'
2
+ root to: "home#index"
3
+ get "/action_list", to: "home#action_list"
3
4
  end
@@ -0,0 +1,11 @@
1
+ module Primer
2
+ module Alpha
3
+ class ActionList
4
+ class Item
5
+ def item
6
+ "item".upcase
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Primer
2
+ module Alpha
3
+ class ActionList
4
+ class Item
5
+ def item
6
+ "item"
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,9 @@
1
+ module Primer
2
+ module Alpha
3
+ class ActionList
4
+ def list
5
+ "list ".upcase + Item.new.item
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Primer
2
+ module Alpha
3
+ class ActionList
4
+ def list
5
+ "list " + Item.new.item
6
+ end
7
+ end
8
+ end
9
+ end