zeitwerk 1.3.2 → 1.3.3
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 +4 -4
 - data/lib/zeitwerk/explicit_namespace.rb +1 -10
 - data/lib/zeitwerk/loader.rb +31 -1
 - data/lib/zeitwerk/registry.rb +0 -10
 - data/lib/zeitwerk/version.rb +1 -1
 - metadata +2 -3
 - data/lib/zeitwerk/ordered_set.rb +0 -21
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: ed6569d242e6aec3f736aef043e5c949ce12365d8b1647195820512b17185423
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: d046e7d1b35242a562ab09b7bea7a865e43a99b3a03c336fac86e2528b3fa2e5
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 3e2c325e9f18a1c81ea64fd6c6078bdba1bdeaed67bbbf316f9294f2b5901d172e7fd0bde3bf256a3049fe7ca363efa0a0d02f246acef53b8e6aed83b43db738
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 321d32b46d05e8eb1e1ce20d7936b0ef42f0f57a89d2f4243d8d2da2421f02b7096e7db88f83e6cc37f9f87e5e7df3c55e74ed7e6ac08c9c27f7a4f251882125
         
     | 
| 
         @@ -47,15 +47,6 @@ module Zeitwerk 
     | 
|
| 
       47 
47 
     | 
    
         
             
                    disable_tracer_if_unneeded
         
     | 
| 
       48 
48 
     | 
    
         
             
                  end
         
     | 
| 
       49 
49 
     | 
    
         | 
| 
       50 
     | 
    
         
            -
                  # Utility for the test suite
         
     | 
| 
       51 
     | 
    
         
            -
                  #
         
     | 
| 
       52 
     | 
    
         
            -
                  # @private
         
     | 
| 
       53 
     | 
    
         
            -
                  # @return [void]
         
     | 
| 
       54 
     | 
    
         
            -
                  def teardown
         
     | 
| 
       55 
     | 
    
         
            -
                    cpaths.clear
         
     | 
| 
       56 
     | 
    
         
            -
                    tracer.disable
         
     | 
| 
       57 
     | 
    
         
            -
                  end
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
50 
     | 
    
         
             
                  def disable_tracer_if_unneeded
         
     | 
| 
       60 
51 
     | 
    
         
             
                    mutex.synchronize do
         
     | 
| 
       61 
52 
     | 
    
         
             
                      tracer.disable if cpaths.empty?
         
     | 
| 
         @@ -67,7 +58,7 @@ module Zeitwerk 
     | 
|
| 
       67 
58 
     | 
    
         
             
                @mutex  = Mutex.new
         
     | 
| 
       68 
59 
     | 
    
         
             
                @tracer = TracePoint.new(:class) do |event|
         
     | 
| 
       69 
60 
     | 
    
         
             
                  # Note that it makes sense to compute the hash code unconditionally,
         
     | 
| 
       70 
     | 
    
         
            -
                  # because  
     | 
| 
      
 61 
     | 
    
         
            +
                  # because the trace point is disabled if cpaths is empty.
         
     | 
| 
       71 
62 
     | 
    
         
             
                  if loader = cpaths.delete(event.self.name)
         
     | 
| 
       72 
63 
     | 
    
         
             
                    loader.on_namespace_loaded(event.self)
         
     | 
| 
       73 
64 
     | 
    
         
             
                    disable_tracer_if_unneeded
         
     | 
    
        data/lib/zeitwerk/loader.rb
    CHANGED
    
    | 
         @@ -415,7 +415,37 @@ module Zeitwerk 
     | 
|
| 
       415 
415 
     | 
    
         
             
                # @param cname [String]
         
     | 
| 
       416 
416 
     | 
    
         
             
                # @return [String, nil]
         
     | 
| 
       417 
417 
     | 
    
         
             
                def autoload_for?(parent, cname)
         
     | 
| 
       418 
     | 
    
         
            -
                  parent 
     | 
| 
      
 418 
     | 
    
         
            +
                  strict_autoload_path(parent, cname) || Registry.inception?(cpath(parent, cname))
         
     | 
| 
      
 419 
     | 
    
         
            +
                end
         
     | 
| 
      
 420 
     | 
    
         
            +
             
     | 
| 
      
 421 
     | 
    
         
            +
                # The autoload? predicate takes into account the ancestor chain of the
         
     | 
| 
      
 422 
     | 
    
         
            +
                # receiver, like const_defined? and other methods in the constants API do.
         
     | 
| 
      
 423 
     | 
    
         
            +
                #
         
     | 
| 
      
 424 
     | 
    
         
            +
                # For example, given
         
     | 
| 
      
 425 
     | 
    
         
            +
                #
         
     | 
| 
      
 426 
     | 
    
         
            +
                #   class A
         
     | 
| 
      
 427 
     | 
    
         
            +
                #     autoload :X, "x.rb"
         
     | 
| 
      
 428 
     | 
    
         
            +
                #   end
         
     | 
| 
      
 429 
     | 
    
         
            +
                #
         
     | 
| 
      
 430 
     | 
    
         
            +
                #   class B < A
         
     | 
| 
      
 431 
     | 
    
         
            +
                #   end
         
     | 
| 
      
 432 
     | 
    
         
            +
                #
         
     | 
| 
      
 433 
     | 
    
         
            +
                # B.autoload?(:X) returns "x.rb".
         
     | 
| 
      
 434 
     | 
    
         
            +
                #
         
     | 
| 
      
 435 
     | 
    
         
            +
                # We need a way to strictly check in parent ignoring ancestors.
         
     | 
| 
      
 436 
     | 
    
         
            +
                #
         
     | 
| 
      
 437 
     | 
    
         
            +
                # @param parent [Module]
         
     | 
| 
      
 438 
     | 
    
         
            +
                # @param cname [String]
         
     | 
| 
      
 439 
     | 
    
         
            +
                # @return [String, nil]
         
     | 
| 
      
 440 
     | 
    
         
            +
                def strict_autoload_path(parent, cname)
         
     | 
| 
      
 441 
     | 
    
         
            +
                  if autoload_path = parent.autoload?(cname)
         
     | 
| 
      
 442 
     | 
    
         
            +
                    # Due to the use cases we have, we are done if parent is a Module.
         
     | 
| 
      
 443 
     | 
    
         
            +
                    return autoload_path unless parent.is_a?(Class)
         
     | 
| 
      
 444 
     | 
    
         
            +
                    # Since file and constant names match, if both parent and one of its
         
     | 
| 
      
 445 
     | 
    
         
            +
                    # ancestors have an autoload for the same cname, their autoload paths
         
     | 
| 
      
 446 
     | 
    
         
            +
                    # cannot be equal.
         
     | 
| 
      
 447 
     | 
    
         
            +
                    return autoload_path unless parent.superclass.autoload?(cname) == autoload_path
         
     | 
| 
      
 448 
     | 
    
         
            +
                  end
         
     | 
| 
       419 
449 
     | 
    
         
             
                end
         
     | 
| 
       420 
450 
     | 
    
         | 
| 
       421 
451 
     | 
    
         
             
                # This method is called this way because I prefer `preload` to be the method
         
     | 
    
        data/lib/zeitwerk/registry.rb
    CHANGED
    
    | 
         @@ -137,16 +137,6 @@ module Zeitwerk 
     | 
|
| 
       137 
137 
     | 
    
         
             
                    autoloads.delete_if { |_path, object| object == loader }
         
     | 
| 
       138 
138 
     | 
    
         
             
                    inceptions.delete_if { |_cpath, (_path, object)| object == loader }
         
     | 
| 
       139 
139 
     | 
    
         
             
                  end
         
     | 
| 
       140 
     | 
    
         
            -
             
     | 
| 
       141 
     | 
    
         
            -
                  # Utility for the test suite
         
     | 
| 
       142 
     | 
    
         
            -
                  #
         
     | 
| 
       143 
     | 
    
         
            -
                  # @private
         
     | 
| 
       144 
     | 
    
         
            -
                  # @return [void]
         
     | 
| 
       145 
     | 
    
         
            -
                  def teardown
         
     | 
| 
       146 
     | 
    
         
            -
                    loaders.each(&:unload)
         
     | 
| 
       147 
     | 
    
         
            -
                    loaders.clear
         
     | 
| 
       148 
     | 
    
         
            -
                    loaders_managing_gems.clear
         
     | 
| 
       149 
     | 
    
         
            -
                  end
         
     | 
| 
       150 
140 
     | 
    
         
             
                end
         
     | 
| 
       151 
141 
     | 
    
         | 
| 
       152 
142 
     | 
    
         
             
                @loaders               = []
         
     | 
    
        data/lib/zeitwerk/version.rb
    CHANGED
    
    
    
        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: 1.3. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.3.3
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Xavier Noria
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2019-03- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2019-03-11 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies: []
         
     | 
| 
       13 
13 
     | 
    
         
             
            description: |2
         
     | 
| 
       14 
14 
     | 
    
         
             
                  Zeitwerk implements constant autoloading with Ruby semantics. Each gem
         
     | 
| 
         @@ -29,7 +29,6 @@ files: 
     | 
|
| 
       29 
29 
     | 
    
         
             
            - lib/zeitwerk/kernel.rb
         
     | 
| 
       30 
30 
     | 
    
         
             
            - lib/zeitwerk/loader.rb
         
     | 
| 
       31 
31 
     | 
    
         
             
            - lib/zeitwerk/loader/callbacks.rb
         
     | 
| 
       32 
     | 
    
         
            -
            - lib/zeitwerk/ordered_set.rb
         
     | 
| 
       33 
32 
     | 
    
         
             
            - lib/zeitwerk/registry.rb
         
     | 
| 
       34 
33 
     | 
    
         
             
            - lib/zeitwerk/version.rb
         
     | 
| 
       35 
34 
     | 
    
         
             
            homepage: https://github.com/fxn/zeitwerk
         
     | 
    
        data/lib/zeitwerk/ordered_set.rb
    DELETED
    
    | 
         @@ -1,21 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            module Zeitwerk
         
     | 
| 
       2 
     | 
    
         
            -
              class OrderedSet
         
     | 
| 
       3 
     | 
    
         
            -
                def initialize
         
     | 
| 
       4 
     | 
    
         
            -
                  @set = {}
         
     | 
| 
       5 
     | 
    
         
            -
                end
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
                def add(object)
         
     | 
| 
       8 
     | 
    
         
            -
                  @set[object] = true
         
     | 
| 
       9 
     | 
    
         
            -
                end
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
                def del(object)
         
     | 
| 
       12 
     | 
    
         
            -
                  @set.delete(object)
         
     | 
| 
       13 
     | 
    
         
            -
                end
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                def each
         
     | 
| 
       16 
     | 
    
         
            -
                  @set.each_key do |key|
         
     | 
| 
       17 
     | 
    
         
            -
                    yield key
         
     | 
| 
       18 
     | 
    
         
            -
                  end
         
     | 
| 
       19 
     | 
    
         
            -
                end
         
     | 
| 
       20 
     | 
    
         
            -
              end
         
     | 
| 
       21 
     | 
    
         
            -
            end
         
     |