-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unresolved or ambiguous specs during Gem::Specification.reset #7657
Comments
Can you share the contents of |
It's the default #!/usr/bin/env ruby
# frozen_string_literal: true
#
# This file was generated by Bundler.
#
# The application 'bundle' is installed as part of a gem, and
# this file is here to facilitate running it.
#
require "rubygems"
m = Module.new do
module_function
def invoked_as_script?
File.expand_path($0) == File.expand_path(__FILE__)
end
def env_var_version
ENV["BUNDLER_VERSION"]
end
def cli_arg_version
return unless invoked_as_script? # don't want to hijack other binstubs
return unless "update".start_with?(ARGV.first || " ") # must be running `bundle update`
bundler_version = nil
update_index = nil
ARGV.each_with_index do |a, i|
if update_index && update_index.succ == i && a.match?(Gem::Version::ANCHORED_VERSION_PATTERN)
bundler_version = a
end
next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/
bundler_version = $1
update_index = i
end
bundler_version
end
def gemfile
gemfile = ENV["BUNDLE_GEMFILE"]
return gemfile if gemfile && !gemfile.empty?
File.expand_path("../Gemfile", __dir__)
end
def lockfile
lockfile =
case File.basename(gemfile)
when "gems.rb" then gemfile.sub(/\.rb$/, ".locked")
else "#{gemfile}.lock"
end
File.expand_path(lockfile)
end
def lockfile_version
return unless File.file?(lockfile)
lockfile_contents = File.read(lockfile)
return unless lockfile_contents =~ /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/
Regexp.last_match(1)
end
def bundler_requirement
@bundler_requirement ||=
env_var_version ||
cli_arg_version ||
bundler_requirement_for(lockfile_version)
end
def bundler_requirement_for(version)
return "#{Gem::Requirement.default}.a" unless version
bundler_gem_version = Gem::Version.new(version)
bundler_gem_version.approximate_recommendation
end
def load_bundler!
ENV["BUNDLE_GEMFILE"] ||= gemfile
activate_bundler
end
def activate_bundler
gem_error = activation_error_handling do
gem "bundler", bundler_requirement
end
return if gem_error.nil?
require_error = activation_error_handling do
require "bundler/version"
end
return if require_error.nil? && Gem::Requirement.new(bundler_requirement).satisfied_by?(Gem::Version.new(Bundler::VERSION))
warn "Activating bundler (#{bundler_requirement}) failed:\n#{gem_error.message}\n\nTo install the version of bundler this project requires, run `gem install bundler -v '#{bundler_requirement}'`"
exit 42
end
def activation_error_handling
yield
nil
rescue StandardError, LoadError => e
e
end
end
m.load_bundler!
if m.invoked_as_script?
load Gem.bin_path("bundler", "bundle")
end
Unfortunately no but it should be easily reproducible |
repro script to run with truffleruby 24.0.1 : #!/usr/bin/env ruby
# frozen_string_literal: true
require "bundler/inline"
gemfile(true) do
source "https://rubygems.org"
gem 'psych'
end nicolas@MacBook-Pro-de-Nicolas:~/PROJECTS/CONCERTO/test$ ./test.rb
setrlimit to increase file descriptor limit failed, errno 22
Fetching gem metadata from https://rubygems.org/........
Resolving dependencies...
WARN: Unresolved or ambiguous specs during Gem::Specification.reset:
stringio (>= 0)
Available/installed versions of this gem:
- 3.1.0
- 3.0.4
WARN: Clearing out unresolved specs. Try 'gem cleanup <gem>'
Please report a bug if this causes problems. |
I tried upgrading/downgrading RubyGems and it seems this is no longer an issue since RubyGems 3.4.21, particularly since RubyGems started using a pure-ruby YAML parser instead of psych: #6615. Please do reopen if still happening after upgrading RubyGems! |
I am facing this issue with RubyGems 3.5.23.
|
Like @navidemad, I am seeing this regularly when updating using bundler.
It also occurs on the latest HEAD too.
|
Yeah, I've seen this too, will try to have a look. |
Is there a new issue we can subscribe too? Or can you re-open this one, @deivid-rodriguez? |
Nope. Can you open a new ticket with repro steps? |
I just saw the issue too and was wondering if this issue is the one to follow. But I'm happy trying to build a simplified repro and file a new issue. Thanks! 🚀 |
Great, thank you! I did notice the issue myself at some point but I forgot to open a new ticket and I now lost track of how to repro. |
For what it's worth, I've been able to reproduce the "Unresolved or ambiguous specs during Gem::Specification.reset" error on Ruby 3.2.6 with Rubygems 3.4.19 after running podman run --rm docker.io/ruby:3.2 \
sh -c 'gem install --user-install psych stringio && gem --version' Which produces the output
However, the error does not occur after |
Yeah, not for that if upgrading RubyGems fixes it, but people are also seeing this with the latest RubyGems. |
I can confirm that this is still happening to me with Bundler 2.5.23 and rubygems 3.5.23. But so far I was unable to reproduce it reliably :( I'll try to remember to take a FS snapshot before running |
Here is a minimal reproduction procedure: |
Thanks, @scivola. Unfortunately I think this is not enough to reproduce. I already tried basically the same thing:
Works fine. |
In my example rails/thor#889, it is necessary to use Thor. require "bundler"
Bundler.require and execute below?
|
I can somewhat reproduce this, although not as explained in rails/thor#889. If
This happens because |
Hei! So I was finally able to reproduce the problem reliably. You have to:
require "bundler/inline"
gemfile(true) do
source "https://rubygems.org"
gem "rake"
end Then you should get output like:
The problem is that during the same process:
This kind of warning sometimes could make sense sometimes but I don't think it shows any actual problem in this particular situation, so I proposed #8309 to skip it. |
Hi there!
I got this warning in CI when running my app with TruffleRuby 24.0.1 :
I don't have it with Ruby 3.3.1.
stringio
is declared in myGemfile
:Thank you!
The text was updated successfully, but these errors were encountered: