ruby/rubygems · error · BadRequirementError

Illformed requirement [#{obj.inspect}]

Error message

Illformed requirement [#{obj.inspect}]

What it means

Error "Illformed requirement [#{obj.inspect}]" thrown in ruby/rubygems.

Source

Thrown at lib/rubygems/requirement.rb:107

  end

  ##
  # Parse +obj+, returning an <tt>[op, version]</tt> pair. +obj+ can
  # be a String or a Gem::Version.
  #
  # If +obj+ is a String, it can be either a full requirement
  # specification, like <tt>">= 1.2"</tt>, or a simple version number,
  # like <tt>"1.2"</tt>.
  #
  #     parse("> 1.0")                 # => [">", Gem::Version.new("1.0")]
  #     parse("1.0")                   # => ["=", Gem::Version.new("1.0")]
  #     parse(Gem::Version.new("1.0")) # => ["=,  Gem::Version.new("1.0")]

  def self.parse(obj)
    return ["=", obj] if Gem::Version === obj

    unless PATTERN =~ obj.to_s
      raise BadRequirementError, "Illformed requirement [#{obj.inspect}]"
    end
    op = -($1 || "=")
    version = -$2

    if op == ">=" && version == "0"
      DefaultRequirement
    elsif op == ">=" && version == "0.a"
      DefaultPrereleaseRequirement
    else
      [op, Gem::Version.new(version)]
    end
  end

  ##
  # An array of requirement pairs. The first element of the pair is
  # the op, and the second is the Gem::Version.

  attr_reader :requirements # :nodoc:

View on GitHub (pinned to 86cbb817a3)

Solutions

  1. Fix the version requirement string (e.g. '>= 1.0', '~> 2.1'); the reported value is malformed

When it happens

Trigger: Thrown at lib/rubygems/requirement.rb:107 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of ruby/rubygems@86cbb817a3 (2026-08-23). Data as JSON: /api/errors/0dc1d23aac07553d. Report an issue: GitHub.