Giter VIP home page Giter VIP logo

molinillo's Introduction

Molinillo

Build Status Maintainability Test Coverage

A generic dependency-resolution implementation.

Installation

Add this line to your application's Gemfile:

gem 'molinillo', :git => 'https://github.com/CocoaPods/Molinillo'

And then execute:

$ bundle install

Or install it yourself as:

$ gem install molinillo

Usage

See the ARCHITECTURE file for an overview and look at the test suite for example usage.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a pull request

The Name

Molinillo is a special whisk used in Mexico in the preparation of beverages such as hot chocolate. Much like a dependency resolver, a molinillo helps take a list of ingredients and turn it into a delicious concoction!

molinillo's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

molinillo's Issues

Find all CocoaPods with a circular dependency

Find all podspecs in CocoaPods master and ensure they are not circular dependencies. A quick search and I found two manually (KFData 1.0.1/ARAnalytics).

  • Try both platforms, iOS and OS X
  • Need to run on every recursive subspec, not just top-level specs

I know this is outside the scope of Resolver. But considering I found two pod specs by core contributors to CocoaPods which have circular dependencies which have been working before. I think it's important we check how many their are and potentially fix them before we break many CocoaPods projects for our users.

Molinillo shows already-resolved conflicts in the VersionConflict exception.

Error message:

Bundler could not find compatible versions for gem "does-not-exist":
  In Gemfile:
    dep2 was resolved to 0.0.1, which depends on
      does-not-exist (= 1.0.0)

Could not find gem 'does-not-exist (= 1.0.0)', which is required by gem 'dep2', in any of the sources.

Bundler could not find compatible versions for gem "librato-metrics":
  In Gemfile:
    librato-metrics (= 1.5.0)

    dependency was resolved to 0.0.1, which depends on
      librato-metrics

Clearly, there's no real conflict with librato-metrics. If you fix the does-not-exist dependency error, then the librato-metrics error goes away. I traced the problem to the version of Milinillo that's in the Bundler repo, but that bug probably exists here too.

This small project demonstrates the problem: https://github.com/j3pic/bundler-test

Is this project still active?

I have created a few issues and there has been no response. I see issues and pull requests that are up to three years old. Is this project no longer active? Is there some other repository that is active?

Vague error message for 0.0.0-pre

This looks like an edge case but I struggled to diagnose it for a few hours.

My podspec looks like this:

Pod::Spec.new do |s|
  s.name = 'MyLib'
  s.version = '0.0.0-alpha.0'
  ...

When I run pod spec lint MyLib.podspec, I get the following error, produced by Molinillo:

    - ERROR | [iOS] unknown: Encountered an unknown error (CocoaPods could not find compatible versions for pod "MyLib":
  In Podfile:
    MyLib (from `/Users/bnickel/Documents/GitHub/my-lib/MyLib.podspec`)

After some experimentation, I discovered that any pre-release label on 0.0.0 triggers this error. Validation continues if I use 0.0.0 or 0.0.1-alpha.0. This could either be resolved by adding support for 0.0.0 pre-releases or improving the message that gets logged in this case.

Make a 1.0.0 release?

Hi!
Would it be possible to cut a new release? the last one was quite some time ago and there were some changes merged.

podspec validation error

Getting the following error for pod spec lint using cocoapods (1.3.0) and molinillo (0.6.4)

- ERROR | [iOS] unknown: Encountered an unknown error (undefined method `version' for #<Molinillo::Resolver::Resolution::PossibilitySet:0x007f8b003223b8>) during validation.

Below is the podspec file

Pod::Spec.new do |s|

  s.name         = "ThreeRingControl"
  s.version      = "1.0.0"
  s.summary      = "A three-ring control like the Activity status bars"
  s.homepage     = "http://raywenderlich.com"
  s.license      = {:type => "MIT" }
  s.authors       = { "Ashfaque Mohammad" => "[email protected]" }
  s.source       = { :git => "https://github.com/ashfaque2017/ThreeRingControl.git", :tag => "1.0.0" }
  s.source_files  = "./ThreeRingControl/*.{h,swift}"
  s.resources    = "ThreeRingControl/*.mp3"
  s.platform     = :ios, "11.2"
end

Not sure what is wrong with this podspec file?

Can't resolve circular dependency now?

Resolver changed to Molinillo, my private repo receive this:

There is a circular dependency between A and B

My project is huge, lots of framework have circular dependency. Why resolver do not support this?

Improve documentation

Noticed this in the README:

See the ARCHITECTURE file for an overview and look at the test suite for example usage. Better documentation and examples are forthcoming.

Adding this task to track these improved documentation and examples.

Dependabot can't resolve your Ruby dependency files

Dependabot can't resolve your Ruby dependency files.

As a result, Dependabot couldn't update your dependencies.

The error Dependabot encountered was:

Bundler::VersionConflict with message: Bundler could not find compatible versions for gem "notify":
  In Gemfile:
    kicker was resolved to 3.0.0, which depends on
      notify (~> 0.5.2)

Could not find gem 'notify (~> 0.5.2)', which is required by gem 'kicker', in any of the sources.

If you think the above is an error on Dependabot's side please don't hesitate to get in touch - we'll do whatever we can to fix it.

You can mention @dependabot in the comments below to contact the Dependabot team.

Molinillo cannot find the path of two vertices that there is a circular dependency

Error

ArgumentError - There is no path from A to D
/Users/shuzhen/.rvm/gems/ruby-3.0.0/gems/molinillo-0.8.0/lib/molinillo/dependency_graph.rb:259:in `path'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/gems/molinillo-0.8.0/lib/molinillo/dependency_graph.rb:193:in `add_edge'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/gems/molinillo-0.8.0/lib/molinillo/dependency_graph.rb:152:in `block in add_child_vertex'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/gems/molinillo-0.8.0/lib/molinillo/dependency_graph.rb:150:in `each'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/gems/molinillo-0.8.0/lib/molinillo/dependency_graph.rb:150:in `add_child_vertex'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/gems/molinillo-0.8.0/lib/molinillo/resolution.rb:738:in `block in require_nested_dependencies_for'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/gems/molinillo-0.8.0/lib/molinillo/resolution.rb:737:in `each'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/gems/molinillo-0.8.0/lib/molinillo/resolution.rb:737:in `require_nested_dependencies_for'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/gems/molinillo-0.8.0/lib/molinillo/resolution.rb:727:in `activate_new_spec'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/gems/molinillo-0.8.0/lib/molinillo/resolution.rb:684:in `attempt_to_activate'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/gems/molinillo-0.8.0/lib/molinillo/resolution.rb:254:in `process_topmost_state'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/gems/molinillo-0.8.0/lib/molinillo/resolution.rb:182:in `resolve'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/gems/molinillo-0.8.0/lib/molinillo/resolver.rb:43:in `resolve'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/gems/cocoapods-1.11.3/lib/cocoapods/resolver.rb:94:in `resolve'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/gems/cocoapods-1.11.3/lib/cocoapods/installer/analyzer.rb:1078:in `block in resolve_dependencies'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/gems/cocoapods-1.11.3/lib/cocoapods/user_interface.rb:64:in `section'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/gems/cocoapods-1.11.3/lib/cocoapods/installer/analyzer.rb:1076:in `resolve_dependencies'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/gems/cocoapods-1.11.3/lib/cocoapods/installer/analyzer.rb:124:in `analyze'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/gems/cocoapods-1.11.3/lib/cocoapods/installer.rb:416:in `analyze'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/gems/cocoapods-1.11.3/lib/cocoapods/installer.rb:241:in `block in resolve_dependencies'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/gems/cocoapods-1.11.3/lib/cocoapods/user_interface.rb:64:in `section'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/gems/cocoapods-1.11.3/lib/cocoapods/installer.rb:240:in `resolve_dependencies'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/gems/cocoapods-1.11.3/lib/cocoapods/installer.rb:161:in `install!'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/gems/cocoapods-1.11.3/lib/cocoapods/command/install.rb:52:in `run'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/gems/claide-1.1.0/lib/claide/command.rb:334:in `run'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/gems/cocoapods-1.11.3/lib/cocoapods/command.rb:52:in `run'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/gems/cocoapods-1.11.3/bin/pod:55:in `<top (required)>'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/bin/pod:23:in `load'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/bin/pod:23:in `<main>'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/bin/ruby_executable_hooks:22:in `eval'
/Users/shuzhen/.rvm/gems/ruby-3.0.0/bin/ruby_executable_hooks:22:in `<main>'

Hi, I found an error that looks like a bug of Molinillo.
I have a demo that contains 4 pod: A, B, C and D.
There is a circular dependency in them, and the path is A -> C -> B -> D -> A.
When pod install, Molinillo raises this error, says there is no path from A to D, but the path is actually existed.
I try to add some debug codes in Molinillo to figure out how the error raised.

Code

# Returns the path between two vertices
# @raise [ArgumentError] if there is no path between the vertices
# @param [Vertex] from
# @param [Vertex] to
# @return [Array<Vertex>] the shortest path from `from` to `to`
def path(from, to)
  distances = Hash.new(vertices.size + 1)
  distances[from.name] = 0
  predecessors = {}
  puts "distances : #{distances}"
  puts "predecessors : #{predecessors}"
  each do |vertex|
    puts "\n"
    puts "#{vertex.name}(#{distances[vertex.name]})"
    vertex.successors.each do |successor|
      puts "-- #{successor.name}(#{distances[successor.name]})"
      if distances[successor.name] > distances[vertex.name] + 1
        distances[successor.name] = distances[vertex.name] + 1
        puts "-- update #{successor.name} distance to #{distances[successor.name]}"
        predecessors[successor] = vertex
        puts "-- log `#{successor.name} -> #{vertex.name}`"
      end
    end
  end

  puts "distances : #{distances}"
  puts "predecessors : #{predecessors.map { |k,v| [k.name, v.name] }.to_h}"

  path = [to]
  while before = predecessors[to]
    path << before
    to = before
    break if to == from
  end

  unless path.last.equal?(from)
    raise ArgumentError, "There is no path from #{from.name} to #{to.name}"
  end

  path.reverse
end

Log

distances : {"A"=>0}
predecessors : {}

A(0)
-- C(5)
-- update C distance to 1
-- log `C -> A`

B(5)
-- D(5)

C(1)
-- B(5)
-- update B distance to 2
-- log `B -> C`

D(5)
distances : {"A"=>0, "C"=>1, "B"=>2}
predecessors : {"C"=>"A", "B"=>"C"}

It looks like D's distance cannot be updated as expected when enumerate to B, and the predecessors cannot log D -> B.
At last it raises the error because the predecessors does not contain D.

I think it will raise this error if the dependency path is not equal to the enumeration order.
So I try to change the dependency path from A -> C -> B -> D -> A to A -> B -> C -> D -> A, and Molinillo print the circular dependency path as expected.

Log

distances : {"A"=>0}
predecessors : {}

A(0)
-- B(5)
-- update B distance to 1
-- log `B -> A`

B(1)
-- C(5)
-- update C distance to 2
-- log `C -> B`

C(2)
-- D(5)
-- update D distance to 3
-- log `D -> C`

D(3)
distances : {"A"=>0, "B"=>1, "C"=>2, "D"=>3}
predecessors : {"B"=>"A", "C"=>"B", "D"=>"C"}
[!] There is a circular dependency between A and B and C and D

Could someone take a look at this please? Is this a bug, or is there some special reason of the enumeration order?
Thanks, and sorry for my poor English.

This is my test demo. PodDemo.zip

[Master] Use unexpect source when have multi-sources

I have many spec repos and some pods are same version in multi-sources. I known it is a very dangerous, but I could not to do anything . : (
The Podfile:

source '[email protected]:iOS/publicthird_binary_repo.git'
source '[email protected]:iOS/product_binary_repo.git'

There is a pod named GYDataCenter(1.1.1-binary) in the two spec repos.

Now, I use CocoaPods v1.3.1, the CP will use the first source which clone from publicthird_binary_repo.

But, I use master branch (CocoaPods and molinillo), the GYDataCenter will be used from product_binary_repo.

I try to put some logs:

: 323: Creating possibility state for GYDataCenter (1 remaining)
: 324: Attempting to activate [GYDataCenter (0.1.1.1-binary)(/Users/whirlwind/.cocoapods/repos/product_binary_repo/GYDataCenter/0.1.1.1-binary/GYDataCenter.podspec.json), GYDataCenter (0.1.1.1-binary)(/Users/whirlwind/.cocoapods/repos/publicthird_binary_repo/GYDataCenter/0.1.1.1-binary/GYDataCenter.podspec.json)]
: 324: Found existing spec ([GYDataCenter (0.1.1.1-binary)(/Users/whirlwind/.cocoapods/repos/product_binary_repo/GYDataCenter/0.1.1.1-binary/GYDataCenter.podspec.json), GYDataCenter (0.1.1.1-binary)(/Users/whirlwind/.cocoapods/repos/publicthird_binary_repo/GYDataCenter/0.1.1.1-binary/GYDataCenter.podspec.json)])
......
-> Using GYDataCenter (0.1.1.1-binary)(/Users/whirlwind/.cocoapods/repos/product_binary_repo/GYDataCenter/0.1.1.1-binary/GYDataCenter.podspec.json)

I'm not sure whose bug is, and I open this issue in this.

Release Pod with prerelease requirement treated as a *prerelease* Pod

NBULog 1.2.2 requires CocoaLumberjack 2.0.0-beta4.

I expected that a Podfile with simply pod 'NBULog' will result in the version mentioned above but instead installs a previous version of NBULog that requires a release CocoaLumberjack version 1.9.2.

Is this the expected behavior?

Ruby 2.3.3:Cant reslove the circular dependency between os and os

Hi All,

I am using ruby version 2.3.3

I am trying to run Cucumber Q2.
One of my gem expecting os >0.9
Bundler could not find compatible versions for gem "os":
In Gemfile:
XXXXXXXXXXXXX was resolved to 1.0.7, which depends on
os (
> 0.9) x86-mingw32

Could not find gem 'os (~> 0.9) x86-mingw32', which is required by gem 'xxxxx

when i try to install that gem file its giving below error

D:>gem install os -v 0.9
ERROR: While executing gem ... (Gem::Resolver::Molinillo::CircularDependencyError)
There is a circular dependency between os and os

Can someone help here?

below is my gem list
D:>gem list

*** LOCAL GEMS ***

addressable (2.5.1)
bigdecimal (1.2.8)
builder (3.2.3)
bundler (1.15.1)
capybara (2.14.4)
childprocess (0.7.1)
cucumber (2.4.0)
cucumber-core (1.5.0)
cucumber-wire (0.0.1)
did_you_mean (1.0.0)
diff-lcs (1.3)
ffi (1.9.18 x86-mingw32
gherkin (4.1.3)
httpclient (2.8.3)
io-console (0.4.5)
json (1.8.3)
mime-types (3.1)
mime-types-data (3.2016
mini_portile2 (2.2.0)
minitest (5.8.5)
multi_json (1.12.1)
multi_test (0.1.2)
net-telnet (0.1.1)
nokogiri (1.8.0 x86-min
os (1.0.0)
parallel (1.12.0)
parallel_tests (2.15.0,
power_assert (0.2.6)
psych (2.1.0)
public_suffix (3.0.0, 2
rack (2.0.3)
rack-test (0.7.0)
rake (10.4.2)
rdoc (4.2.1)
require_relative (1.0.3
rspec (3.6.0, 2.14.0)
rspec-core (3.6.0, 2.14
rspec-expectations (3.6
rspec-mocks (3.6.0, 2.1
rspec-support (3.6.0)
rubyzip (1.2.1)
selenium-webdriver (2.5
test-unit (3.1.5)
websocket (1.2.4)
xpath (2.1.0)

Please define key terms

Thanks for this great project! I truly appreciate your ARCHITECTURE document but I am unclear on the definitions for a number of terms. Could you provide definitions and examples for the following terms:

  • Activate
  • Specification
  • Requirement
  • Possibility

In addition, can you clarify whether a PossibilitySet is a group of versions of the same artifact, with each version having the same transitive dependencies each with the same version range?

Drop old rubies support?

I wanted to start using require_relative for internal requires, for speedier code loading, but it's not available on 1.8.7. Thoughts on dropping support for old rubies that have reached their end of life?

Add a clean way to remove a node

Need a way to delete a node from a DependencyGraph and clean up after the deletion, i.e. remove all edges that connect to that node and all nodes whose only parents were that node (recursively).

Requirements of children that are swapped out are not removed, adding "phantom constraints" and breaking resolution

Hi, I'm a Berkshelf user facing an issue where a resolution fails due to a constraint that does not actually exist in the solver input. For the background, please see berkshelf/solve#62. The rest is Molinillo-specific investigation.

This is the solver run, you can see that the first version tried is homebrew-2.1.2, and just before performing the swap the payload has a single dependency, build-essential >= 2.1.2:

Creating possibility state for homebrew (>= 0.0.0) (29 remaining)
Attempting to activate homebrew-2.1.2
Activated homebrew at homebrew-2.1.2
Requiring nested dependencies (build-essential (>= 2.1.2))
Creating possibility state for homebrew (= 1.10.0) (1 remaining)
Attempting to activate homebrew-1.10.0
Found existing spec (homebrew-2.1.2)

      def attempt_to_swap_possibility
        binding.pry if name == 'homebrew'
        activated.tag(:swap)

[3] pry(#<Molinillo::Resolver::Resolution>)> v.name
=> "homebrew"
[4] pry(#<Molinillo::Resolver::Resolution>)> v.payload.version
=> #<Semverse::Version 2.1.2>
[5] pry(#<Molinillo::Resolver::Resolution>)> v.payload.dependencies.size
=> 1
[6] pry(#<Molinillo::Resolver::Resolution>)> v.payload.dependencies.first.name
=> "build-essential"
[7] pry(#<Molinillo::Resolver::Resolution>)> v.payload.dependencies.first.constraint
=> #<Semverse::Constraint >= 2.1.2>

Ok, step into fixup_swapped_children, we see that the successor (build-essential) is not removed, since other cookbooks depend on it:

Fixing up swapped children for (homebrew)
There are 20 predecessors for (build-essential)

    359: def fixup_swapped_children(vertex)
    360:   debug(depth) { "Fixing up swapped children for (#{vertex.name})" }
    361:
    362:   payload = vertex.payload
    363:   dep_names = dependencies_for(payload).map(&method(:name_for))
    364:   vertex.successors.each do |succ|
    365:     debug(depth) { "There are #{succ.predecessors.to_a.size} predecessors for (#{succ.name})" }
 => 366:     binding.pry if name == 'homebrew'
    367:     if !dep_names.include?(succ.name) && !succ.root? && succ.predecessors.to_a == [vertex]
    368:       debug(depth) { "Removing orphaned spec #{succ.name} after swapping #{name}" }
    369:       activated.detach_vertex_named(succ.name)
    370:
    371:       all_successor_names = succ.recursive_successors.map(&:name)
    372:
    373:       requirements.delete_if do |requirement|
    374:         requirement_name = name_for(requirement)
    375:         (requirement_name == succ.name) || all_successor_names.include?(requirement_name)
    376:       end
    377:     end
    378:   end
    379: end

After the swap, you can see the new possibility selected has no dependencies:

[1] pry(#<Molinillo::Resolver::Resolution>)> payload.dependencies
=> []
[2] pry(#<Molinillo::Resolver::Resolution>)> payload.name
=> "homebrew"
[3] pry(#<Molinillo::Resolver::Resolution>)> payload.version
=> #<Semverse::Version 1.10.0>

but the requirement introduced by the possibility that was swapped out is not removed (it was not done in fixup_swapped_children since the successor is not an orphan, and I don't see related logic anywhere else...):

[1] pry(#<Molinillo::Resolver::Resolution>)> r = requirements.find_all { |r| 'build-essential' == name_for(r) };

[5] pry(#<Molinillo::Resolver::Resolution>)> r.to_a.each{|req| print "#{req.constraint}\n"};
>= 0.0.0
>= 0.0.0
>= 0.0.0
>= 0.0.0
>= 0.0.0
>= 0.0.0
>= 0.0.0
>= 0.0.0
>= 0.0.0
>= 0.0.0
>= 0.0.0
>= 0.0.0
>= 0.0.0
>= 0.0.0
>= 0.0.0
>= 0.0.0
>= 0.0.0
>= 0.0.0
>= 0.0.0
>= 2.1.2

resuming, we get:
Activated homebrew at homebrew-1.10.0
Requiring nested dependencies ()

so that (phantom) requirement for build-essential 2.1.2 sticks around, eventually a (real) conflicting requirement is introduced, and resolution fails:

Unwinding for conflict: build-essential (~> 1.4)
Finished dependency resolution
Finished resolution (5929 steps) (Took 1.796806 seconds) (2016-10-07 17:19:33 -0400)
Unable to satisfy the following requirements:

- `build-essential (>= 0.0.0)` required by `some package`
...
- `build-essential (>= 2.1.2)` required by `homebrew-1.10.0` (there is no such constraint in the solver input!)
...
- `build-essential (~> 1.4)` required by `package that actually needs 1.4`

I don't understand the logic of Molinillo enough to understand what's the correct solution. Presumably, requirements that are no longer needed (present in possibility that was swapped out, but absent in the new possibility) need to be removed; but how to find the correct requirements to remove, whether a new state needs to be pushed or rewound as a result of the changing requirements, and so on are unclear to me.

This introduces all kinds of weird behavior up the stack, issues that are resolved by adding version pins, removing pins, all kinds of placebo solutions that do not actually address what seems to be the actual problem at this level. Any help would be greatly appreciated.

Plans for a new version?

Hi!

I upgraded both rubygems & bundler to use the latest and greatest revision of Molinillo:

I was wondering if there are any plans to release the latest changes in the master branch of Molinillo, so we can ship both libraries with Molinillo's code that matches an actual release.

Two different sources providing the same pod yields wrong resolved version

We have two pod repos that include the same pod, one with sources and one with binary form (for development speed up or other internal reasons).

It seems that when we upgrade to Molinillo version 0.6.x it resolves an incorrect version.

SourcesFormRepo:

PodA with published versions [1.0.0, 1.0.1, 1.0.2]

BinaryFormRepo

PodA with published versions [1.0.2] 

Given the Podfile:

source 'source-repo.git'
source 'binary-repo.git'

pod 'PodA', '~> 1.0'

target 'SomeApp'

This will resolve back to version PodA of 1.0.1 instead of 1.0.2 despite the fact that both sources and binary repo both have version 1.0.2 published.

With Molinillo 0.5.x it correctly returns PodA 1.0.2 from the sources repo since the sources repo is defined first in the Podfile.

We are working on trying to get a sample project in the meantime for you but it's a little bit harder because it requires the same pod published in two different repos.

/cc @greysteil @segiddins

Segmentation fault

It was once, but probably you're interested.

The repo: https://github.com/AlexWayfer/gem_template/tree/102b583

Logs
> bundle exec rspec
./home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb:5: [BUG] Segmentation fault at 0x00007fc7ccabcfb8
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux]

-- Control frame information -----------------------------------------------
c:0040 p:---- s:0222 e:000221 CFUNC  :require_relative
c:0039 p:0011 s:0217 e:000216 TOP    /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/molinillo/lib/molinillo/dependency_ [FINISH]
c:0038 p:---- s:0214 e:000213 CFUNC  :require_relative
c:0037 p:0005 s:0209 e:000208 TOP    /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb [FINISH]
c:0036 p:---- s:0206 e:000205 CFUNC  :require_relative
c:0035 p:0017 s:0201 e:000200 TOP    /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/molinillo/lib/molinillo.rb:5 [FINISH]
c:0034 p:---- s:0198 e:000197 CFUNC  :require_relative
c:0033 p:0013 s:0193 e:000192 TOP    /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendored_molinillo.rb:4 [FINISH]
c:0032 p:---- s:0190 e:000189 CFUNC  :require_relative
c:0031 p:0005 s:0185 e:000184 CLASS  /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/resolver.rb:5
c:0030 p:0007 s:0182 e:000181 CLASS  /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/resolver.rb:4
c:0029 p:0007 s:0179 e:000178 TOP    /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/resolver.rb:3 [FINISH]
c:0028 p:---- s:0176 e:000175 CFUNC  :require
c:0027 p:0194 s:0171 e:000170 METHOD <internal:/home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85 [FINISH]
c:0026 p:0026 s:0154 e:000151 METHOD /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/definition.rb:477
c:0025 p:0181 s:0147 e:000146 METHOD /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/definition.rb:279
c:0024 p:0014 s:0143 e:000142 METHOD /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/definition.rb:177
c:0023 p:0109 s:0139 e:000138 METHOD /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/installer.rb:271
c:0022 p:0064 s:0134 e:000133 BLOCK  /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/installer.rb:82
c:0021 p:0024 s:0131 e:000130 BLOCK  /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/process_lock.rb:12 [FINISH]
c:0020 p:---- s:0127 e:000126 CFUNC  :open
c:0019 p:0050 s:0121 e:000120 METHOD /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/process_lock.rb:9
c:0018 p:0024 s:0114 e:000113 METHOD /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/installer.rb:71
c:0017 p:0052 s:0109 e:000108 METHOD /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/installer.rb:23
c:0016 p:0612 s:0101 e:000100 METHOD /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/cli/update.rb:78
c:0015 p:0018 s:0087 e:000086 BLOCK  /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/cli.rb:305
c:0014 p:0033 s:0084 e:000083 METHOD /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/settings.rb:131
c:0013 p:0053 s:0078 e:000077 METHOD /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/cli.rb:304
c:0012 p:0054 s:0073 e:000072 METHOD /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor/command.rb:27
c:0011 p:0040 s:0065 e:000064 METHOD /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor/invocation.rb:127
c:0010 p:0239 s:0058 e:000057 METHOD /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor.rb:392
c:0009 p:0008 s:0045 e:000044 METHOD /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/cli.rb:31
c:0008 p:0066 s:0040 e:000039 METHOD /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor/base.rb:485
c:0007 p:0008 s:0033 e:000032 METHOD /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/cli.rb:25
c:0006 p:0108 s:0028 e:000027 BLOCK  /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/exe/bundle:48
c:0005 p:0014 s:0022 e:000021 METHOD /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/friendly_errors.rb:120
c:0004 p:0272 s:0017 E:000e48 TOP    /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/exe/bundle:36 [FINISH]
c:0003 p:---- s:0013 e:000012 CFUNC  :load
c:0002 p:0127 s:0008 E:001af0 EVAL   /home/alex/.rbenv/versions/3.1.2/bin/bundle:25 [FINISH]
c:0001 p:0000 s:0003 E:000100 (none) [FINISH]

-- Ruby level backtrace information ----------------------------------------
/home/alex/.rbenv/versions/3.1.2/bin/bundle:25:in `<main>'
/home/alex/.rbenv/versions/3.1.2/bin/bundle:25:in `load'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/exe/bundle:36:in `<top (required)>'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/friendly_errors.rb:120:in `with_friendly_errors'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/exe/bundle:48:in `block in <top (required)>'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/cli.rb:25:in `start'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/cli.rb:31:in `dispatch'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/cli.rb:304:in `update'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/settings.rb:131:in `temporary'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/cli.rb:305:in `block in update'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/cli/update.rb:78:in `run'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/installer.rb:23:in `install'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/installer.rb:71:in `run'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/process_lock.rb:9:in `lock'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/process_lock.rb:9:in `open'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/process_lock.rb:12:in `block in lock'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/installer.rb:82:in `block in run'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/installer.rb:271:in `resolve_if_needed'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/definition.rb:177:in `resolve_remotely!'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/definition.rb:279:in `resolve'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/definition.rb:477:in `resolver'
<internal:/home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
<internal:/home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/resolver.rb:3:in `<top (required)>'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/resolver.rb:4:in `<module:Bundler>'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/resolver.rb:5:in `<class:Resolver>'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/resolver.rb:5:in `require_relative'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendored_molinillo.rb:4:in `<top (required)>'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendored_molinillo.rb:4:in `require_relative'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/molinillo/lib/molinillo.rb:5:in `<top (required)>'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/molinillo/lib/molinillo.rb:5:in `require_relative'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb:3:in `<top (required)>'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/molinillo/lib/molinillo/resolver.rb:3:in `require_relative'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb:5:in `<top (required)>'
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb:5:in `require_relative'

-- Machine register context ------------------------------------------------
 RIP: 0x00007fcfd0a5dd7c RBP: 0x0000000000000ea1 RSP: 0x00007ffe88ea1ed0
 RAX: 0x00000000c0502805 RBX: 0x0000000000000fe4 RCX: 0x000000000000000f
 RDX: 0x000055826c1d1660 RDI: 0x00007ffe88ea1fd0 RSI: 0x00007fc7ccabcfb8
  R8: 0x000055826c19f540  R9: 0x0000000000000004 R10: 0xe5ec7415f5066d42
 R11: 0x00007fcfd0b39360 R12: 0xc833a2e15a038fe4 R13: 0x000055826b7a1bc0
 R14: 0xc833a2e15a038fe4 R15: 0xffffffffffffffff EFL: 0x0000000000010202

-- C level backtrace information -------------------------------------------
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_vm_bugreport+0x50c) [0x7fcfd0ad97ec]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_bug_for_fatal_signal+0xf0) [0x7fcfd08d0a00]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(sigsegv+0x4b) [0x7fcfd0a2d82b]
[0x7fcfd0444a40]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_str_hash_cmp+0xc) [0x7fcfd0a5dd7c]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(find_table_entry_ind+0xde) [0x7fcfd0a37ace]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_st_lookup+0x43) [0x7fcfd0a386d3]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_intern3+0x70) [0x7fcfd0a6be80]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(parse_ident+0x350) [0x7fcfd09a1ef0]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(ruby_yyparse+0x764) [0x7fcfd09b3804]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(yycompile0+0xf8) [0x7fcfd09c4ff8]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_suppress_tracing+0x101) [0x7fcfd0addd71]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_parser_compile_file_path+0xba) [0x7fcfd09b25ea]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(load_file_internal+0x12e) [0x7fcfd0a2a57e]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_ensure+0x113) [0x7fcfd08d98d3]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_parser_load_file+0xf9) [0x7fcfd0a2a149]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(require_internal+0xcc3) [0x7fcfd093ce83]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_require_string+0x3d) [0x7fcfd093d7dd]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(vm_call_cfunc_with_frame+0x117) [0x7fcfd0aaeea7]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(vm_exec_core+0x10c) [0x7fcfd0abe6cc]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_vm_exec+0xb3) [0x7fcfd0ac3cc3]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(require_internal+0xc80) [0x7fcfd093ce40]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_require_string+0x3d) [0x7fcfd093d7dd]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(vm_call_cfunc_with_frame+0x117) [0x7fcfd0aaeea7]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(vm_exec_core+0x10c) [0x7fcfd0abe6cc]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_vm_exec+0xb3) [0x7fcfd0ac3cc3]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(require_internal+0xc80) [0x7fcfd093ce40]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_require_string+0x3d) [0x7fcfd093d7dd]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(vm_call_cfunc_with_frame+0x117) [0x7fcfd0aaeea7]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(vm_exec_core+0x10c) [0x7fcfd0abe6cc]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_vm_exec+0xb3) [0x7fcfd0ac3cc3]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(require_internal+0xc80) [0x7fcfd093ce40]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_require_string+0x3d) [0x7fcfd093d7dd]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(vm_call_cfunc_with_frame+0x117) [0x7fcfd0aaeea7]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(vm_exec_core+0x10c) [0x7fcfd0abe6cc]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_vm_exec+0xb3) [0x7fcfd0ac3cc3]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(require_internal+0xc80) [0x7fcfd093ce40]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_require_string+0x3d) [0x7fcfd093d7dd]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(vm_call_cfunc_with_frame+0x117) [0x7fcfd0aaeea7]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(vm_exec_core+0x10c) [0x7fcfd0abe6cc]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_vm_exec+0xb3) [0x7fcfd0ac3cc3]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(require_internal+0xc80) [0x7fcfd093ce40]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_require_string+0x3d) [0x7fcfd093d7dd]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(vm_call_cfunc_with_frame+0x117) [0x7fcfd0aaeea7]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(vm_call_alias+0x81) [0x7fcfd0ad4c01]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(vm_exec_core+0x10c) [0x7fcfd0abe6cc]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_vm_exec+0xb3) [0x7fcfd0ac3cc3]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_funcallv+0x192) [0x7fcfd0acde32]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(autoload_require+0x84) [0x7fcfd0a9d524]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_ensure+0x113) [0x7fcfd08d98d3]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_autoload_load+0x1de) [0x7fcfd0aa5bfe]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(vm_exec_core+0x44c6) [0x7fcfd0ac2a86]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_vm_exec+0x55c) [0x7fcfd0ac416c]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_yield+0x1dc) [0x7fcfd0ac85bc]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_ensure+0x113) [0x7fcfd08d98d3]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(vm_call_cfunc_with_frame+0x117) [0x7fcfd0aaeea7]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(vm_sendish.constprop.0+0x163) [0x7fcfd0ab49a3]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(vm_exec_core+0x170) [0x7fcfd0abe730]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_vm_exec+0x55c) [0x7fcfd0ac416c]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_f_load+0x189) [0x7fcfd093bdb9]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(vm_call_cfunc_with_frame+0x117) [0x7fcfd0aaeea7]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(vm_exec_core+0x10c) [0x7fcfd0abe6cc]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_vm_exec+0x55c) [0x7fcfd0ac416c]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(rb_ec_exec_node+0xa5) [0x7fcfd08d5895]
/home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1(ruby_run_node+0x55) [0x7fcfd08dbbd5]
/home/alex/.rbenv/versions/3.1.2/bin/ruby(main+0x5b) [0x558269cf80fb]

-- Other runtime information -----------------------------------------------

* Loaded script: /home/alex/.rbenv/versions/3.1.2/bin/bundle

* Loaded features:

    0 enumerator.so
    1 thread.rb
    2 fiber.so
    3 rational.so
    4 complex.so
    5 ruby2_keywords.rb
    6 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/enc/encdb.so
    7 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/enc/trans/transdb.so
    8 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/rbconfig.rb
    9 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/compatibility.rb
   10 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/defaults.rb
   11 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/deprecate.rb
   12 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/errors.rb
   13 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/unknown_command_spell_checker.rb
   14 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/exceptions.rb
   15 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/basic_specification.rb
   16 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/stub_specification.rb
   17 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/platform.rb
   18 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/util/list.rb
   19 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/version.rb
   20 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/requirement.rb
   21 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/specification.rb
   22 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/util.rb
   23 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/dependency.rb
   24 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/core_ext/kernel_gem.rb
   25 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/monitor.so
   26 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/monitor.rb
   27 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/core_ext/kernel_require.rb
   28 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/core_ext/kernel_warn.rb
   29 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems.rb
   30 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/path_support.rb
   31 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/error_highlight/version.rb
   32 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/error_highlight/base.rb
   33 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/error_highlight/formatter.rb
   34 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/error_highlight/core_ext.rb
   35 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/error_highlight.rb
   36 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/did_you_mean/version.rb
   37 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/did_you_mean/core_ext/name_error.rb
   38 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/did_you_mean/levenshtein.rb
   39 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/did_you_mean/jaro_winkler.rb
   40 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/did_you_mean/spell_checker.rb
   41 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/did_you_mean/spell_checkers/name_error_checkers/class_name_checker.rb
   42 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb
   43 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/did_you_mean/spell_checkers/name_error_checkers.rb
   44 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/did_you_mean/spell_checkers/method_name_checker.rb
   45 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/did_you_mean/spell_checkers/key_error_checker.rb
   46 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/did_you_mean/spell_checkers/null_checker.rb
   47 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/did_you_mean/tree_spell_checker.rb
   48 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/did_you_mean/spell_checkers/require_path_checker.rb
   49 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/did_you_mean/spell_checkers/pattern_key_name_checker.rb
   50 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/did_you_mean/formatter.rb
   51 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/did_you_mean.rb
   52 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/bundler_version_finder.rb
   53 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/tsort/lib/tsort.rb
   54 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/tsort.rb
   55 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/request_set/gem_dependency_api.rb
   56 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/request_set/lockfile/parser.rb
   57 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/request_set/lockfile/tokenizer.rb
   58 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/request_set/lockfile.rb
   59 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/request_set.rb
   60 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb
   61 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb
   62 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/errors.rb
   63 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb
   64 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb
   65 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb
   66 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb
   67 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb
   68 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb
   69 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb
   70 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb
   71 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb
   72 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb
   73 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/state.rb
   74 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb
   75 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb
   76 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/resolution.rb
   77 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/resolver.rb
   78 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb
   79 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/molinillo/lib/molinillo.rb
   80 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/molinillo.rb
   81 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/activation_request.rb
   82 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/conflict.rb
   83 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/dependency_request.rb
   84 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/requirement_list.rb
   85 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/stats.rb
   86 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/set.rb
   87 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/api_set.rb
   88 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/composed_set.rb
   89 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/best_set.rb
   90 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/current_set.rb
   91 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/git_set.rb
   92 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/index_set.rb
   93 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/installer_set.rb
   94 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/lock_set.rb
   95 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/vendor_set.rb
   96 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/source_set.rb
   97 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/specification.rb
   98 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/spec_specification.rb
   99 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/api_specification.rb
  100 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/git_specification.rb
  101 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/index_specification.rb
  102 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/installed_specification.rb
  103 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/local_specification.rb
  104 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/lock_specification.rb
  105 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver/vendor_specification.rb
  106 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/resolver.rb
  107 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/text.rb
  108 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/source/git.rb
  109 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/source/installed.rb
  110 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/source/specific_file.rb
  111 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/source/local.rb
  112 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/source/lock.rb
  113 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/source/vendor.rb
  114 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/source.rb
  115 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/fileutils/lib/fileutils.rb
  116 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendored_fileutils.rb
  117 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/pathname.so
  118 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/pathname.rb
  119 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/errors.rb
  120 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/environment_preserver.rb
  121 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/plugin/api.rb
  122 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/plugin.rb
  123 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/match_metadata.rb
  124 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/gem_helpers.rb
  125 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/match_platform.rb
  126 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/rubygems_ext.rb
  127 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/rubygems_integration.rb
  128 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/version.rb
  129 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/constants.rb
  130 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/current_ruby.rb
  131 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/build_metadata.rb
  132 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler.rb
  133 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor/command.rb
  134 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb
  135 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor/error.rb
  136 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor/invocation.rb
  137 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor/nested_context.rb
  138 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor/parser/argument.rb
  139 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb
  140 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor/parser/option.rb
  141 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor/parser/options.rb
  142 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor/parser.rb
  143 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor/shell.rb
  144 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb
  145 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb
  146 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor/line_editor.rb
  147 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor/util.rb
  148 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor/base.rb
  149 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor.rb
  150 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendored_thor.rb
  151 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/friendly_errors.rb
  152 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/cli/common.rb
  153 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/settings.rb
  154 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/feature_flag.rb
  155 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/shared_helpers.rb
  156 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/user_interaction.rb
  157 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/ext/builder.rb
  158 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/cli/config.rb
  159 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/cli/plugin.rb
  160 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/cli.rb
  161 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor/shell/basic.rb
  162 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor/shell/color.rb
  163 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/self_manager.rb
  164 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/source.rb
  165 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/source/path.rb
  166 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/source/git.rb
  167 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/source/rubygems.rb
  168 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/lockfile_parser.rb
  169 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/ui.rb
  170 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/ui/shell.rb
  171 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/ui/rg_proxy.rb
  172 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/cli/update.rb
  173 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/settings/validator.rb
  174 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/dependency.rb
  175 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/ruby_dsl.rb
  176 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/dsl.rb
  177 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/plugin/dsl.rb
  178 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/source_list.rb
  179 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/source/metadata.rb
  180 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/plugin/source_list.rb
  181 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/plugin/installer.rb
  182 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/plugin/installer/rubygems.rb
  183 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/uri/lib/uri/version.rb
  184 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb
  185 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb
  186 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/uri/lib/uri/common.rb
  187 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/uri/lib/uri/generic.rb
  188 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/uri/lib/uri/file.rb
  189 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/uri/lib/uri/ftp.rb
  190 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/uri/lib/uri/http.rb
  191 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/uri/lib/uri/https.rb
  192 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/uri/lib/uri/ldap.rb
  193 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/uri/lib/uri/ldaps.rb
  194 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/uri/lib/uri/mailto.rb
  195 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/uri/lib/uri.rb
  196 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendored_uri.rb
  197 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/definition.rb
  198 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/tsort/lib/tsort.rb
  199 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendored_tsort.rb
  200 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/spec_set.rb
  201 /home/alex/Projects/ruby/gem_template/foo-bar_baz/lib/foo/bar_baz/version.rb
  202 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/source/gemspec.rb
  203 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/gem_version_promoter.rb
  204 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/socket.so
  205 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/io/wait.so
  206 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/socket.rb
  207 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/timeout-0.3.0/lib/timeout.rb
  208 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/net-protocol-0.1.3/lib/net/protocol.rb
  209 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/uri/version.rb
  210 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/uri/rfc2396_parser.rb
  211 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/uri/rfc3986_parser.rb
  212 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/uri/common.rb
  213 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/uri/generic.rb
  214 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/uri/file.rb
  215 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/uri/ftp.rb
  216 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/uri/http.rb
  217 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/uri/https.rb
  218 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/uri/ldap.rb
  219 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/uri/ldaps.rb
  220 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/uri/mailto.rb
  221 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/uri/ws.rb
  222 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/uri.rb
  223 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/zlib.so
  224 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/net/http/exceptions.rb
  225 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/net/http/header.rb
  226 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/net/http/generic_request.rb
  227 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/net/http/request.rb
  228 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/net/http/requests.rb
  229 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/net/http/response.rb
  230 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/net/http/responses.rb
  231 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/net/http/proxy_delta.rb
  232 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/net/http/backward.rb
  233 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/net/http.rb
  234 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/cgi/core.rb
  235 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/cgi/escape.so
  236 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/cgi/util.rb
  237 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/cgi/cookie.rb
  238 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/cgi.rb
  239 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb
  240 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb
  241 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb
  242 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/connection_pool/lib/connection_pool.rb
  243 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/digest/version.rb
  244 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/digest.so
  245 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/digest/loader.rb
  246 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/digest.rb
  247 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/openssl.so
  248 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/openssl/bn.rb
  249 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/openssl/marshal.rb
  250 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/openssl/pkey.rb
  251 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/openssl/cipher.rb
  252 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/openssl/digest.rb
  253 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/openssl/hmac.rb
  254 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/openssl/x509.rb
  255 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/openssl/buffering.rb
  256 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/io/nonblock.so
  257 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/ipaddr.rb
  258 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/openssl/ssl.rb
  259 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/openssl/pkcs5.rb
  260 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/openssl/version.rb
  261 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/openssl.rb
  262 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb
  263 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb
  264 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb
  265 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb
  266 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendored_persistent.rb
  267 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/random/formatter.rb
  268 /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/securerandom.rb
  269 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/request/http_pool.rb
  270 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/request/https_pool.rb
  271 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/request/connection_pools.rb
  272 /home/alex/.rbenv/versions/3.1.2/lib/ruby/site_ruby/3.1.0/rubygems/request.rb
  273 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/fetcher/base.rb
  274 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/worker.rb
  275 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/fetcher/compact_index.rb
  276 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/fetcher/dependency.rb
  277 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/fetcher/index.rb
  278 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/fetcher.rb
  279 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/installer/gem_installer.rb
  280 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/installer/parallel_installer.rb
  281 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/installer/standalone.rb
  282 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/installer.rb
  283 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/plugin/events.rb
  284 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/plugin/index.rb
  285 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/process_lock.rb
  286 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb
  287 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/molinillo/lib/molinillo/delegates/specification_provider.rb
  288 /home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.26/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb

* Process memory map:

558269cf7000-558269cf8000 r--p 00000000 08:13 22442533                   /home/alex/.rbenv/versions/3.1.2/bin/ruby
558269cf8000-558269cf9000 r-xp 00001000 08:13 22442533                   /home/alex/.rbenv/versions/3.1.2/bin/ruby
558269cf9000-558269cfa000 r--p 00002000 08:13 22442533                   /home/alex/.rbenv/versions/3.1.2/bin/ruby
558269cfa000-558269cfb000 r--p 00002000 08:13 22442533                   /home/alex/.rbenv/versions/3.1.2/bin/ruby
558269cfb000-558269cfc000 rw-p 00003000 08:13 22442533                   /home/alex/.rbenv/versions/3.1.2/bin/ruby
55826b77c000-55826c47b000 rw-p 00000000 00:00 0                          [heap]
7fcfcc3e0000-7fcfcc3e3000 r--p 00000000 08:05 5414647                    /usr/lib/libgcc_s.so.1
7fcfcc3e3000-7fcfcc3fa000 r-xp 00003000 08:05 5414647                    /usr/lib/libgcc_s.so.1
7fcfcc3fa000-7fcfcc3fe000 r--p 0001a000 08:05 5414647                    /usr/lib/libgcc_s.so.1
7fcfcc3fe000-7fcfcc3ff000 r--p 0001d000 08:05 5414647                    /usr/lib/libgcc_s.so.1
7fcfcc3ff000-7fcfcc400000 rw-p 0001e000 08:05 5414647                    /usr/lib/libgcc_s.so.1
7fcfcc400000-7fcfcc475000 r--p 00000000 08:05 5429330                    /usr/lib/libcrypto.so.1.1
7fcfcc475000-7fcfcc621000 r-xp 00075000 08:05 5429330                    /usr/lib/libcrypto.so.1.1
7fcfcc621000-7fcfcc6ae000 r--p 00221000 08:05 5429330                    /usr/lib/libcrypto.so.1.1
7fcfcc6ae000-7fcfcc6d9000 r--p 002ae000 08:05 5429330                    /usr/lib/libcrypto.so.1.1
7fcfcc6d9000-7fcfcc6db000 rw-p 002d9000 08:05 5429330                    /usr/lib/libcrypto.so.1.1
7fcfcc6db000-7fcfcc6df000 rw-p 00000000 00:00 0 
7fcfcc6fa000-7fcfcc730000 r--s 00000000 08:13 22442533                   /home/alex/.rbenv/versions/3.1.2/bin/ruby
7fcfcc730000-7fcfcc75c000 rw-p 00000000 00:00 0 
7fcfcc75d000-7fcfcc77a000 r--p 00000000 08:05 5429331                    /usr/lib/libssl.so.1.1
7fcfcc77a000-7fcfcc7cd000 r-xp 0001d000 08:05 5429331                    /usr/lib/libssl.so.1.1
7fcfcc7cd000-7fcfcc7e5000 r--p 00070000 08:05 5429331                    /usr/lib/libssl.so.1.1
7fcfcc7e5000-7fcfcc7ee000 r--p 00087000 08:05 5429331                    /usr/lib/libssl.so.1.1
7fcfcc7ee000-7fcfcc7f2000 rw-p 00090000 08:05 5429331                    /usr/lib/libssl.so.1.1
7fcfcc7f8000-7fcfcc820000 rw-p 00000000 00:00 0 
7fcfcc823000-7fcfcc824000 r--p 00000000 08:13 22447260                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/io/nonblock.so
7fcfcc824000-7fcfcc825000 r-xp 00001000 08:13 22447260                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/io/nonblock.so
7fcfcc825000-7fcfcc826000 r--p 00002000 08:13 22447260                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/io/nonblock.so
7fcfcc826000-7fcfcc827000 r--p 00002000 08:13 22447260                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/io/nonblock.so
7fcfcc827000-7fcfcc828000 rw-p 00003000 08:13 22447260                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/io/nonblock.so
7fcfcc828000-7fcfcc83d000 r--p 00000000 08:13 22447226                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/openssl.so
7fcfcc83d000-7fcfcc874000 r-xp 00015000 08:13 22447226                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/openssl.so
7fcfcc874000-7fcfcc886000 r--p 0004c000 08:13 22447226                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/openssl.so
7fcfcc886000-7fcfcc888000 r--p 0005d000 08:13 22447226                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/openssl.so
7fcfcc888000-7fcfcc88a000 rw-p 0005f000 08:13 22447226                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/openssl.so
7fcfcc88a000-7fcfcca70000 rw-p 00000000 00:00 0 
7fcfcca70000-7fcfcca72000 r--p 00000000 08:13 22447251                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/pathname.so
7fcfcca72000-7fcfcca78000 r-xp 00002000 08:13 22447251                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/pathname.so
7fcfcca78000-7fcfcca7a000 r--p 00008000 08:13 22447251                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/pathname.so
7fcfcca7a000-7fcfcca7b000 r--p 00009000 08:13 22447251                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/pathname.so
7fcfcca7b000-7fcfcca7c000 rw-p 0000a000 08:13 22447251                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/pathname.so
7fcfcca7c000-7fcfccb40000 rw-p 00000000 00:00 0 
7fcfccb40000-7fcfccb41000 ---p 00000000 00:00 0 
7fcfccb41000-7fcfccbe2000 rw-p 00000000 00:00 0 
7fcfccbe2000-7fcfccbe3000 ---p 00000000 00:00 0 
7fcfccbe3000-7fcfccc84000 rw-p 00000000 00:00 0 
7fcfccc84000-7fcfccc85000 ---p 00000000 00:00 0 
7fcfccc85000-7fcfccd26000 rw-p 00000000 00:00 0 
7fcfccd26000-7fcfccd27000 ---p 00000000 00:00 0 
7fcfccd27000-7fcfccdc8000 rw-p 00000000 00:00 0 
7fcfccdc8000-7fcfccdc9000 ---p 00000000 00:00 0 
7fcfccdc9000-7fcfcce6a000 rw-p 00000000 00:00 0 
7fcfcce6a000-7fcfcce6b000 ---p 00000000 00:00 0 
7fcfcce6b000-7fcfccf0c000 rw-p 00000000 00:00 0 
7fcfccf0c000-7fcfccf0d000 ---p 00000000 00:00 0 
7fcfccf0d000-7fcfccfae000 rw-p 00000000 00:00 0 
7fcfccfae000-7fcfccfaf000 ---p 00000000 00:00 0 
7fcfccfaf000-7fcfcd050000 rw-p 00000000 00:00 0 
7fcfcd050000-7fcfcd051000 ---p 00000000 00:00 0 
7fcfcd051000-7fcfcd0f2000 rw-p 00000000 00:00 0 
7fcfcd0f2000-7fcfcd0f3000 ---p 00000000 00:00 0 
7fcfcd0f3000-7fcfcd194000 rw-p 00000000 00:00 0 
7fcfcd194000-7fcfcd195000 ---p 00000000 00:00 0 
7fcfcd195000-7fcfcd236000 rw-p 00000000 00:00 0 
7fcfcd236000-7fcfcd237000 ---p 00000000 00:00 0 
7fcfcd237000-7fcfcd2d8000 rw-p 00000000 00:00 0 
7fcfcd2d8000-7fcfcd2d9000 ---p 00000000 00:00 0 
7fcfcd2d9000-7fcfcd37a000 rw-p 00000000 00:00 0 
7fcfcd37a000-7fcfcd37b000 ---p 00000000 00:00 0 
7fcfcd37b000-7fcfcd41c000 rw-p 00000000 00:00 0 
7fcfcd41c000-7fcfcd41d000 ---p 00000000 00:00 0 
7fcfcd41d000-7fcfcd4be000 rw-p 00000000 00:00 0 
7fcfcd4be000-7fcfcd4bf000 ---p 00000000 00:00 0 
7fcfcd4bf000-7fcfcd560000 rw-p 00000000 00:00 0 
7fcfcd560000-7fcfcd561000 ---p 00000000 00:00 0 
7fcfcd561000-7fcfcd602000 rw-p 00000000 00:00 0 
7fcfcd602000-7fcfcd603000 ---p 00000000 00:00 0 
7fcfcd603000-7fcfcd6a4000 rw-p 00000000 00:00 0 
7fcfcd6a4000-7fcfcd6a5000 ---p 00000000 00:00 0 
7fcfcd6a5000-7fcfcd746000 rw-p 00000000 00:00 0 
7fcfcd746000-7fcfcd747000 ---p 00000000 00:00 0 
7fcfcd747000-7fcfcd7e8000 rw-p 00000000 00:00 0 
7fcfcd7e8000-7fcfcd7e9000 ---p 00000000 00:00 0 
7fcfcd7e9000-7fcfcd88a000 rw-p 00000000 00:00 0 
7fcfcd88a000-7fcfcd88b000 ---p 00000000 00:00 0 
7fcfcd88b000-7fcfcd92c000 rw-p 00000000 00:00 0 
7fcfcd92c000-7fcfcd92d000 ---p 00000000 00:00 0 
7fcfcd92d000-7fcfcd9ce000 rw-p 00000000 00:00 0 
7fcfcd9ce000-7fcfcd9cf000 ---p 00000000 00:00 0 
7fcfcd9cf000-7fcfcda70000 rw-p 00000000 00:00 0 
7fcfcda70000-7fcfcda71000 ---p 00000000 00:00 0 
7fcfcda71000-7fcfcdb12000 rw-p 00000000 00:00 0 
7fcfcdb12000-7fcfcdb13000 ---p 00000000 00:00 0 
7fcfcdb13000-7fcfcdbb4000 rw-p 00000000 00:00 0 
7fcfcdbb4000-7fcfcdbb5000 ---p 00000000 00:00 0 
7fcfcdbb5000-7fcfcdc56000 rw-p 00000000 00:00 0 
7fcfcdc56000-7fcfcdc57000 ---p 00000000 00:00 0 
7fcfcdc57000-7fcfcdcf8000 rw-p 00000000 00:00 0 
7fcfcdcf8000-7fcfcdcf9000 ---p 00000000 00:00 0 
7fcfcdcf9000-7fcfcdd9a000 rw-p 00000000 00:00 0 
7fcfcdd9a000-7fcfcdd9b000 ---p 00000000 00:00 0 
7fcfcdd9b000-7fcfcde3c000 rw-p 00000000 00:00 0 
7fcfcde3c000-7fcfcde3d000 ---p 00000000 00:00 0 
7fcfcde3d000-7fcfcdede000 rw-p 00000000 00:00 0 
7fcfcdede000-7fcfcdedf000 ---p 00000000 00:00 0 
7fcfcdedf000-7fcfcff80000 rw-p 00000000 00:00 0 
7fcfcff82000-7fcfcff83000 r--p 00000000 08:13 22447257                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/monitor.so
7fcfcff83000-7fcfcff84000 r-xp 00001000 08:13 22447257                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/monitor.so
7fcfcff84000-7fcfcff85000 r--p 00002000 08:13 22447257                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/monitor.so
7fcfcff85000-7fcfcff86000 r--p 00002000 08:13 22447257                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/monitor.so
7fcfcff86000-7fcfcff87000 rw-p 00003000 08:13 22447257                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/monitor.so
7fcfcff88000-7fcfcff8c000 rw-p 00000000 00:00 0 
7fcfcff8f000-7fcfcff91000 r--p 00000000 08:13 22447263                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/digest.so
7fcfcff91000-7fcfcff93000 r-xp 00002000 08:13 22447263                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/digest.so
7fcfcff93000-7fcfcff94000 r--p 00004000 08:13 22447263                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/digest.so
7fcfcff94000-7fcfcff95000 r--p 00004000 08:13 22447263                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/digest.so
7fcfcff95000-7fcfcff96000 rw-p 00005000 08:13 22447263                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/digest.so
7fcfcff96000-7fcfcff97000 r--p 00000000 08:13 22447266                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/cgi/escape.so
7fcfcff97000-7fcfcff99000 r-xp 00001000 08:13 22447266                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/cgi/escape.so
7fcfcff99000-7fcfcff9a000 r--p 00003000 08:13 22447266                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/cgi/escape.so
7fcfcff9a000-7fcfcff9b000 r--p 00003000 08:13 22447266                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/cgi/escape.so
7fcfcff9b000-7fcfcff9c000 rw-p 00004000 08:13 22447266                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/cgi/escape.so
7fcfcff9c000-7fcfcff9f000 r--p 00000000 08:13 22447227                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/zlib.so
7fcfcff9f000-7fcfcffab000 r-xp 00003000 08:13 22447227                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/zlib.so
7fcfcffab000-7fcfcffae000 r--p 0000f000 08:13 22447227                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/zlib.so
7fcfcffae000-7fcfcffaf000 ---p 00012000 08:13 22447227                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/zlib.so
7fcfcffaf000-7fcfcffb0000 r--p 00012000 08:13 22447227                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/zlib.so
7fcfcffb0000-7fcfcffb1000 rw-p 00013000 08:13 22447227                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/zlib.so
7fcfcffb1000-7fcfcffb2000 r--p 00000000 08:13 22447259                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/io/wait.so
7fcfcffb2000-7fcfcffb3000 r-xp 00001000 08:13 22447259                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/io/wait.so
7fcfcffb3000-7fcfcffb4000 r--p 00002000 08:13 22447259                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/io/wait.so
7fcfcffb4000-7fcfcffb5000 r--p 00002000 08:13 22447259                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/io/wait.so
7fcfcffb5000-7fcfcffb6000 rw-p 00003000 08:13 22447259                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/io/wait.so
7fcfcffb6000-7fcfcffbc000 r--p 00000000 08:13 22447228                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/socket.so
7fcfcffbc000-7fcfcffde000 r-xp 00006000 08:13 22447228                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/socket.so
7fcfcffde000-7fcfcffe6000 r--p 00028000 08:13 22447228                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/socket.so
7fcfcffe6000-7fcfcffe7000 r--p 0002f000 08:13 22447228                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/socket.so
7fcfcffe7000-7fcfcffe8000 rw-p 00030000 08:13 22447228                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/socket.so
7fcfcffe8000-7fcfd0000000 rw-p 00000000 00:00 0 
7fcfd0000000-7fcfd02eb000 r--p 00000000 08:05 5429071                    /usr/lib/locale/locale-archive
7fcfd02eb000-7fcfd02ec000 r--p 00000000 08:13 22447327                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/enc/trans/transdb.so
7fcfd02ec000-7fcfd02ed000 r-xp 00001000 08:13 22447327                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/enc/trans/transdb.so
7fcfd02ed000-7fcfd02ee000 r--p 00002000 08:13 22447327                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/enc/trans/transdb.so
7fcfd02ee000-7fcfd02ef000 r--p 00002000 08:13 22447327                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/enc/trans/transdb.so
7fcfd02ef000-7fcfd02f0000 rw-p 00003000 08:13 22447327                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/enc/trans/transdb.so
7fcfd02f0000-7fcfd0308000 rw-p 00000000 00:00 0 
7fcfd030b000-7fcfd040c000 rw-p 00000000 00:00 0 
7fcfd040c000-7fcfd042e000 r--p 00000000 08:05 5377014                    /usr/lib/libc.so.6
7fcfd042e000-7fcfd0589000 r-xp 00022000 08:05 5377014                    /usr/lib/libc.so.6
7fcfd0589000-7fcfd05e0000 r--p 0017d000 08:05 5377014                    /usr/lib/libc.so.6
7fcfd05e0000-7fcfd05e4000 r--p 001d4000 08:05 5377014                    /usr/lib/libc.so.6
7fcfd05e4000-7fcfd05e6000 rw-p 001d8000 08:05 5377014                    /usr/lib/libc.so.6
7fcfd05e6000-7fcfd05f3000 rw-p 00000000 00:00 0 
7fcfd05f3000-7fcfd0601000 r--p 00000000 08:05 5377156                    /usr/lib/libm.so.6
7fcfd0601000-7fcfd067b000 r-xp 0000e000 08:05 5377156                    /usr/lib/libm.so.6
7fcfd067b000-7fcfd06d9000 r--p 00088000 08:05 5377156                    /usr/lib/libm.so.6
7fcfd06d9000-7fcfd06da000 r--p 000e5000 08:05 5377156                    /usr/lib/libm.so.6
7fcfd06da000-7fcfd06db000 rw-p 000e6000 08:05 5377156                    /usr/lib/libm.so.6
7fcfd06db000-7fcfd06dd000 r--p 00000000 08:05 5386123                    /usr/lib/libcrypt.so.2.0.0
7fcfd06dd000-7fcfd06ee000 r-xp 00002000 08:05 5386123                    /usr/lib/libcrypt.so.2.0.0
7fcfd06ee000-7fcfd0703000 r--p 00013000 08:05 5386123                    /usr/lib/libcrypt.so.2.0.0
7fcfd0703000-7fcfd0704000 r--p 00027000 08:05 5386123                    /usr/lib/libcrypt.so.2.0.0
7fcfd0704000-7fcfd0705000 rw-p 00028000 08:05 5386123                    /usr/lib/libcrypt.so.2.0.0
7fcfd0705000-7fcfd070d000 rw-p 00000000 00:00 0 
7fcfd070d000-7fcfd071e000 r--p 00000000 08:05 5380455                    /usr/lib/libgmp.so.10.4.1
7fcfd071e000-7fcfd0796000 r-xp 00011000 08:05 5380455                    /usr/lib/libgmp.so.10.4.1
7fcfd0796000-7fcfd07ac000 r--p 00089000 08:05 5380455                    /usr/lib/libgmp.so.10.4.1
7fcfd07ac000-7fcfd07ad000 ---p 0009f000 08:05 5380455                    /usr/lib/libgmp.so.10.4.1
7fcfd07ad000-7fcfd07af000 r--p 0009f000 08:05 5380455                    /usr/lib/libgmp.so.10.4.1
7fcfd07af000-7fcfd07b0000 rw-p 000a1000 08:05 5380455                    /usr/lib/libgmp.so.10.4.1
7fcfd07b0000-7fcfd07b3000 r--p 00000000 08:05 5385019                    /usr/lib/libz.so.1.2.13
7fcfd07b3000-7fcfd07c1000 r-xp 00003000 08:05 5385019                    /usr/lib/libz.so.1.2.13
7fcfd07c1000-7fcfd07c8000 r--p 00011000 08:05 5385019                    /usr/lib/libz.so.1.2.13
7fcfd07c8000-7fcfd07c9000 r--p 00017000 08:05 5385019                    /usr/lib/libz.so.1.2.13
7fcfd07c9000-7fcfd07ca000 rw-p 00018000 08:05 5385019                    /usr/lib/libz.so.1.2.13
7fcfd07cb000-7fcfd07cc000 r--p 00000000 08:13 22447306                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/enc/encdb.so
7fcfd07cc000-7fcfd07cd000 r-xp 00001000 08:13 22447306                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/enc/encdb.so
7fcfd07cd000-7fcfd07ce000 r--p 00002000 08:13 22447306                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/enc/encdb.so
7fcfd07ce000-7fcfd07cf000 r--p 00002000 08:13 22447306                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/enc/encdb.so
7fcfd07cf000-7fcfd07d0000 rw-p 00003000 08:13 22447306                   /home/alex/.rbenv/versions/3.1.2/lib/ruby/3.1.0/x86_64-linux/enc/encdb.so
7fcfd07d0000-7fcfd0800000 rw-p 00000000 00:00 0 
7fcfd0800000-7fcfd0833000 r--p 00000000 08:13 22442683                   /home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1.2
7fcfd0833000-7fcfd0b04000 r-xp 00033000 08:13 22442683                   /home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1.2
7fcfd0b04000-7fcfd0c1d000 r--p 00304000 08:13 22442683                   /home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1.2
7fcfd0c1d000-7fcfd0c1e000 ---p 0041d000 08:13 22442683                   /home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1.2
7fcfd0c1e000-7fcfd0c25000 r--p 0041d000 08:13 22442683                   /home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1.2
7fcfd0c25000-7fcfd0c28000 rw-p 00424000 08:13 22442683                   /home/alex/.rbenv/versions/3.1.2/lib/libruby.so.3.1.2
7fcfd0c28000-7fcfd0c41000 rw-p 00000000 00:00 0 
7fcfd0c41000-7fcfd0c42000 r--p 00000000 08:05 5376968                    /usr/lib/ld-linux-x86-64.so.2
7fcfd0c42000-7fcfd0c68000 r-xp 00001000 08:05 5376968                    /usr/lib/ld-linux-x86-64.so.2
7fcfd0c68000-7fcfd0c72000 r--p 00027000 08:05 5376968                    /usr/lib/ld-linux-x86-64.so.2
7fcfd0c72000-7fcfd0c74000 r--p 00031000 08:05 5376968                    /usr/lib/ld-linux-x86-64.so.2
7fcfd0c74000-7fcfd0c76000 rw-p 00033000 08:05 5376968                    /usr/lib/ld-linux-x86-64.so.2
7ffe886a9000-7ffe88ea8000 rw-p 00000000 00:00 0                          [stack]
7ffe88fb6000-7ffe88fba000 r--p 00000000 00:00 0                          [vvar]
7ffe88fba000-7ffe88fbc000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0                  [vsyscall]

What are the reasons for using the latest version?

def resolve_activated_specs
        activated.vertices.each do |_, vertex|
          next unless vertex.payload

          latest_version = vertex.payload.possibilities.reverse_each.find do |possibility|
            vertex.requirements.all? { |req| requirement_satisfied_by?(req, activated, possibility) }
          end

          activated.set_payload(vertex.name, latest_version)
        end
        activated.freeze
end

I found that in the resolving dependency, the latest version is returned. What are the reasons for using the latest version?
If I want to use a minimum version that meets the conditions, what should I do?

Source file loading

I’d prefer to see require statements at the top of the source file. While these are a matter of taste, this is really only needed as a lazy loading optimisation technique, which I don’t see being necessary, or am I overlooking something?

Unclear assignment of root in dependency_graph.add_child_vertex

In the dependency_graph.add_child_vertex the variable root is assigned:

root = !parent_names.delete(nil) { true }

This assignment does not makes sense to me.

Test Case root
![].delete(nil) { true } false
![nil].delete(nil) { true } true
!["a", "b"].delete(nil) { true } false
!["a", "b", nil].delete(nil) { true } true
![nil, "a", "b"].delete(nil) { true } true

If the intent is to allow a root vertex to be created using the add_child_vertex method, the criteria is that the parent_names list is empty (or for some reason only contains nil values). In general, it seems like creating a root vertex in this method is undesirable and an exception should be thrown if the parent names list is empty. In any case, the current implementation is either incorrect or a comment should be added to clarify the intent.

Molinillo::Resolver failing specs (fixtures missing)

Hello,

I am running the specs on the git repository and 2 specs are failing, probably because fixtures are missing. Is it possible to include them?

Thank you

bundle exec bacon spec/dependency_graph_spec.rb spec/resolver_spec.rb spec/state_spec.rb

Molinillo::DependencyGraph
  in general
    ✓ returns root vertices by name
    ✓ returns vertices by name
    ✓ returns nil for non-existant root vertices
    ✓ returns nil for non-existant vertices
  detaching a node
    ✓ detaches a root vertex without successors
    ✓ detaches a root vertex with successors
    ✓ detaches a root vertex with successors with other parents

Molinillo::Resolver
  dependency resolution
  in general
    - can resolve a list of 0 requirements [FAILED]
    - includes the source of a user-specified unsatisfied dependency [FAILED]

Molinillo::ResolutionState
  Molinillo::DependencyState
    ✓ pops a possibility state

Errno::ENOENT: No such file or directory - spec/resolver_integration_specs/index/awesome.json
    /home/yatiohi/source/Molinillo/spec/spec_helper/index.rb:7:in `initialize': in general - can resolve a list of 0 requirements
    /home/yatiohi/source/Molinillo/spec/spec_helper/index.rb:7:in `open'
    /home/yatiohi/source/Molinillo/spec/spec_helper/index.rb:7:in `initialize'
    spec/resolver_spec.rb:96:in `new'
    spec/resolver_spec.rb:96:in `block (3 levels) in <module:Molinillo>'
    spec/resolver_spec.rb:99:in `block (2 levels) in <module:Molinillo>'
    spec/resolver_spec.rb:94:in `block in <module:Molinillo>'
    spec/resolver_spec.rb:60:in `<module:Molinillo>'
    spec/resolver_spec.rb:5:in `<top (required)>'

Errno::ENOENT: No such file or directory - spec/resolver_integration_specs/index/awesome.json
    /home/yatiohi/source/Molinillo/spec/spec_helper/index.rb:7:in `initialize': in general - includes the source of a user-specified unsatisfied dependency
    /home/yatiohi/source/Molinillo/spec/spec_helper/index.rb:7:in `open'
    /home/yatiohi/source/Molinillo/spec/spec_helper/index.rb:7:in `initialize'
    spec/resolver_spec.rb:96:in `new'
    spec/resolver_spec.rb:96:in `block (3 levels) in <module:Molinillo>'
    spec/resolver_spec.rb:104:in `block (2 levels) in <module:Molinillo>'
    spec/resolver_spec.rb:94:in `block in <module:Molinillo>'
    spec/resolver_spec.rb:60:in `<module:Molinillo>'
    spec/resolver_spec.rb:5:in `<top (required)>'

10 specifications (22 requirements), 0 failures, 2 errors
rake aborted!

Please rename DependencyGraph::Action#name

From time to time I need to troll through ObjectSpace and look at the names of various modules. Recently, I started getting the following error:

Bundler::Molinillo::DependencyGraph::Action.name # => raises RuntimeError: Abstract

Now, it's certainly fair to say that I should be more careful, and in fact, I've wrapped my code with a begin/rescue block to make sure that any methods I call on unknown modules are protected against exceptions, but I do think it's fairly reasonable to assume that I can call #name on a random Module and get a value of some kind back.

I'm filing this here as requested to get the #name method renamed to something like #action_name.

Regression on 0.5.2

Hello,

when using 0.5.2 I get an exception when using berks update command.
The issue appeared when starting to use 0.5.2.

Backtrace:

NoMethodError: undefined method `constraint' for nil:NilClass
  /home/g_seux/.gem/ruby/2.3.0/gems/solve-3.0.1/lib/solve/ruby_solver.rb:167:in `requirement_satisfied_by?'
  /home/g_seux/.gem/ruby/2.3.0/bundler/gems/Molinillo-8d7454fba6d1/lib/molinillo/delegates/specification_provider.rb:24:in `block in requirement_satisfied_by?'
  /home/g_seux/.gem/ruby/2.3.0/bundler/gems/Molinillo-8d7454fba6d1/lib/molinillo/delegates/specification_provider.rb:69:in `with_no_such_dependency_error_handling'
  /home/g_seux/.gem/ruby/2.3.0/bundler/gems/Molinillo-8d7454fba6d1/lib/molinillo/delegates/specification_provider.rb:23:in `requirement_satisfied_by?'
  /home/g_seux/.gem/ruby/2.3.0/bundler/gems/Molinillo-8d7454fba6d1/lib/molinillo/resolution.rb:345:in `block in attempt_to_swap_possibility'
  /home/g_seux/.gem/ruby/2.3.0/bundler/gems/Molinillo-8d7454fba6d1/lib/molinillo/resolution.rb:345:in `each'
  /home/g_seux/.gem/ruby/2.3.0/bundler/gems/Molinillo-8d7454fba6d1/lib/molinillo/resolution.rb:345:in `all?'
  /home/g_seux/.gem/ruby/2.3.0/bundler/gems/Molinillo-8d7454fba6d1/lib/molinillo/resolution.rb:345:in `attempt_to_swap_possibility'
  /home/g_seux/.gem/ruby/2.3.0/bundler/gems/Molinillo-8d7454fba6d1/lib/molinillo/resolution.rb:330:in `attempt_to_activate_existing_spec'
  /home/g_seux/.gem/ruby/2.3.0/bundler/gems/Molinillo-8d7454fba6d1/lib/molinillo/resolution.rb:315:in `attempt_to_activate'
  /home/g_seux/.gem/ruby/2.3.0/bundler/gems/Molinillo-8d7454fba6d1/lib/molinillo/resolution.rb:137:in `process_topmost_state'
  /home/g_seux/.gem/ruby/2.3.0/bundler/gems/Molinillo-8d7454fba6d1/lib/molinillo/resolution.rb:78:in `resolve'
  /home/g_seux/.gem/ruby/2.3.0/bundler/gems/Molinillo-8d7454fba6d1/lib/molinillo/resolver.rb:42:in `resolve'
  /home/g_seux/.gem/ruby/2.3.0/gems/solve-3.0.1/lib/solve/ruby_solver.rb:200:in `resolve_with_error_wrapping'
  /home/g_seux/.gem/ruby/2.3.0/gems/solve-3.0.1/lib/solve/ruby_solver.rb:75:in `resolve'
  /home/g_seux/.gem/ruby/2.3.0/gems/solve-3.0.1/lib/solve.rb:64:in `it!'
  /home/g_seux/.gem/ruby/2.3.0/gems/berkshelf-5.1.0/lib/berkshelf/resolver.rb:78:in `resolve'
  /home/g_seux/.gem/ruby/2.3.0/gems/berkshelf-5.1.0/lib/berkshelf/installer.rb:175:in `install_from_universe'
  /home/g_seux/.gem/ruby/2.3.0/gems/berkshelf-5.1.0/lib/berkshelf/installer.rb:39:in `run'
  /home/g_seux/.gem/ruby/2.3.0/gems/berkshelf-5.1.0/lib/berkshelf/berksfile.rb:422:in `install'
  /home/g_seux/.gem/ruby/2.3.0/gems/berkshelf-5.1.0/lib/berkshelf/berksfile.rb:447:in `update'

I've tried to use the patch proposed on #49 without success.

A spelling mistake

"ARCHITECTURE.md" have a spelling mistake in this sentence "Any non-binding requirements can be ignored, as removing them would "onflict" is a misspell onflict". The "onflict" should be "conflict".

By the way, when the better documentation and examples can coming?

detach_vertex_named down method does not restore orphaned vertices

The detach_vertex_named.up method removes the specified vertex, any edges pointing to it, and any vertices that would be orphaned after the removal (if they are not root vertices). However, undoing this action by calling the down method restores the vertex and edges but does not restore any orphaned vertices. Is this a design decision or a bug?

What concerns me is that not only is the behavior asymmetric and inconsistent with the other actions, it restores dangling edges to the graph. It appears that the up method does not clear the edges on the detached vertex itself. When that vertex is restored in the down method, it still has outgoing edges pointing to the orphaned vertices.

Is Molinillo exhaustive?

Hey @segiddins,

I'm reading ARCHITECTURE.md and the source, and I'm still trying to answer the following question: Is Molinillo guaranteed to find a solution if one exists?

In other words, if we construct a pathological case where a solution exists but is hard to find, will Molinillo

  • take a very long time and eventually find the solution (exhaustive), or
  • report that no solution exists (non-exhaustive)?

Please let me know and I'll try and send a pull request to update the documentation.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.