Describe the problem as clearly as you can
RubyGems emits an Unresolved or ambiguous specs during Gem::Specification.reset warning for psych (>= 4.0.0) after activating rdoc when both Ruby's default Psych gem and a newer installed Psych gem are visible.
The warning suggests gem cleanup <gem>, but that does not fully help when one matching Psych spec is the default gem that ships with Ruby. The same warning showed up for me during bundle update --all in a Rails app after Bundler updated psych from 5.3.1 to 5.4.0 while Ruby 3.4.5 still provides default psych 5.2.2.
I did not find an existing issue with the warning text plus the Psych/RDoc combination.
Did you try upgrading rubygems & bundler?
Yes. The warning happened with RubyGems 3.6.9 and Bundler 4.0.3. I also reproduced it during bundle _4.0.13_ update --all before reducing it to RubyGems/RDoc/Psych.
Post steps to reproduce the problem
On Ruby 3.4.5, with default Psych still present, install a newer Psych and activate RDoc:
tmp_gem_home=$(mktemp -d)
export GEM_HOME="$tmp_gem_home"
export GEM_PATH="$tmp_gem_home:$(ruby -rrubygems -e 'print Gem.default_dir')"
gem install psych -v 5.4.0 --no-document
ruby -rrubygems -e 'puts RUBY_DESCRIPTION; puts "RubyGems #{Gem::VERSION}"; puts Gem::Specification.find_all_by_name("psych").map { |s| "psych #{s.version} default=#{s.default_gem?}" }; gem "rdoc"; p Gem::Specification.unresolved_deps; Gem::Specification.reset'
In my app, the original command that surfaced it was simply:
Which command did you run?
Minimal repro:
ruby -rrubygems -e 'gem "rdoc"; Gem::Specification.reset'
Original command:
What were you expecting to happen?
I expected Gem::Specification.reset not to warn in this situation, or at least not to suggest gem cleanup when the ambiguity involves a default gem that cannot be cleaned away normally.
RubyGems appears to intentionally suppress this class of warning for latest_version? dependencies when a default gem is present:
next if dep.latest_version? && matching_versions.any?(&:default_gem?)
But RDoc declares psych (>= 4.0.0), so that suppression does not apply even though this seems like the same default-gem ambiguity.
What actually happened?
With Ruby 3.4.5 and RubyGems 3.6.9:
ruby 3.4.5 (2025-07-16 revision 20cda200d3) +PRISM [arm64-darwin24]
RubyGems 3.6.9
psych 5.4.0 default=false
psych 5.2.2 default=true
{"psych" => <Gem::Dependency type=:runtime name="psych" requirements=">= 4.0.0">, "erb" => <Gem::Dependency type=:runtime name="erb" requirements=">= 0">}
WARN: Unresolved or ambiguous specs during Gem::Specification.reset:
psych (>= 4.0.0)
Available/installed versions of this gem:
- 5.4.0
- 5.2.2
WARN: Clearing out unresolved specs. Try 'gem cleanup <gem>'
Please report a bug if this causes problems.
The original Bundler output was:
Fetching gem metadata from https://rubygems.org/..........
Resolving dependencies...
WARN: Unresolved or ambiguous specs during Gem::Specification.reset:
psych (>= 4.0.0)
Available/installed versions of this gem:
- 5.4.0
- 5.2.2
WARN: Clearing out unresolved specs. Try 'gem cleanup <gem>'
Please report a bug if this causes problems.
Bundle updated!
Workarounds found
Both of these avoided the warning locally:
RUBYOPT=-rpsych bundle update --all
or pinning Psych to Ruby 3.4.5's default version and removing the newer installed copy:
Environment
ruby 3.4.5 (2025-07-16 revision 20cda200d3) +PRISM [arm64-darwin24]
RubyGems 3.6.9
Bundler 4.0.3; also observed with Bundler 4.0.13
macOS arm64-darwin24
Describe the problem as clearly as you can
RubyGems emits an
Unresolved or ambiguous specs during Gem::Specification.resetwarning forpsych (>= 4.0.0)after activatingrdocwhen both Ruby's default Psych gem and a newer installed Psych gem are visible.The warning suggests
gem cleanup <gem>, but that does not fully help when one matching Psych spec is the default gem that ships with Ruby. The same warning showed up for me duringbundle update --allin a Rails app after Bundler updatedpsychfrom5.3.1to5.4.0while Ruby 3.4.5 still provides defaultpsych 5.2.2.I did not find an existing issue with the warning text plus the Psych/RDoc combination.
Did you try upgrading rubygems & bundler?
Yes. The warning happened with RubyGems 3.6.9 and Bundler 4.0.3. I also reproduced it during
bundle _4.0.13_ update --allbefore reducing it to RubyGems/RDoc/Psych.Post steps to reproduce the problem
On Ruby 3.4.5, with default Psych still present, install a newer Psych and activate RDoc:
In my app, the original command that surfaced it was simply:
Which command did you run?
Minimal repro:
ruby -rrubygems -e 'gem "rdoc"; Gem::Specification.reset'Original command:
What were you expecting to happen?
I expected
Gem::Specification.resetnot to warn in this situation, or at least not to suggestgem cleanupwhen the ambiguity involves a default gem that cannot be cleaned away normally.RubyGems appears to intentionally suppress this class of warning for
latest_version?dependencies when a default gem is present:But RDoc declares
psych (>= 4.0.0), so that suppression does not apply even though this seems like the same default-gem ambiguity.What actually happened?
With Ruby 3.4.5 and RubyGems 3.6.9:
The original Bundler output was:
Workarounds found
Both of these avoided the warning locally:
or pinning Psych to Ruby 3.4.5's default version and removing the newer installed copy:
Environment