Exception: Solve::Errors::NoSolutionError

Inherits:
SolveError
  • Object
show all
Defined in:
lib/solve/errors.rb

Direct Known Subclasses

NoSolutionCauseUnknown

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(message = nil, causes = {}) ⇒ NoSolutionError

Returns a new instance of NoSolutionError.

Parameters:

  • message (#to_s) (defaults to: nil)
  • causes (Hash) (defaults to: {})

    a customizable set of options

Options Hash (causes):

  • :missing_artifacts (Array<String>) — default: []
  • :constraints_excluding_all_artifacts (Array<String>) — default: []
  • :unsatisfiable_demand (#to_s) — default: nil
  • :artifacts_with_no_satisfactory_version (Array<String>) — default: []


38
39
40
41
42
43
44
45
# File 'lib/solve/errors.rb', line 38

def initialize(message = nil, causes = {})
  super(message)
  @message = message
  @missing_artifacts = causes[:missing_artifacts] || []
  @constraints_excluding_all_artifacts = causes[:constraints_excluding_all_artifacts] || []
  @unsatisfiable_demand = causes[:unsatisfiable_demand] || nil
  @artifacts_with_no_satisfactory_version = causes[:artifacts_with_no_satisfactory_version] || []
end

Instance Attribute Details

#artifacts_with_no_satisfactory_versionArray<String> (readonly)

The artifact for which there are conflicting dependencies

Returns:

  • (Array<String>)

    The “most constrained” artifacts



31
32
33
# File 'lib/solve/errors.rb', line 31

def artifacts_with_no_satisfactory_version
  @artifacts_with_no_satisfactory_version
end

#constraints_excluding_all_artifactsArray<String> (readonly)

Constraints that eliminate all versions of an artifact, e.g. you ask for mysql >= 2.0.0 but only 1.0.0 exists.

Returns:

  • (Array<String>)

    Invalid constraints as strings



23
24
25
# File 'lib/solve/errors.rb', line 23

def constraints_excluding_all_artifacts
  @constraints_excluding_all_artifacts
end

#missing_artifactsArray<String> (readonly)

Artifacts that don’t exist at any version but are required for a valid solution

Returns:

  • (Array<String>)

    Missing artifact names



18
19
20
# File 'lib/solve/errors.rb', line 18

def missing_artifacts
  @missing_artifacts
end

#unsatisfiable_demandString (readonly)

A demand that has conflicting dependencies

Returns:

  • (String)

    the unsatisfiable demand



27
28
29
# File 'lib/solve/errors.rb', line 27

def unsatisfiable_demand
  @unsatisfiable_demand
end

Instance Method Details

#to_sObject



47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/solve/errors.rb', line 47

def to_s
  s = ""
  s << "#{@message}\n"
  s << "Missing artifacts: #{missing_artifacts.join(',')}\n" unless missing_artifacts.empty?
  unless constraints_excluding_all_artifacts.empty?
	  pretty = constraints_excluding_all_artifacts.map { |constraint| "(#{constraint[0]} #{constraint[1]})" }.join(',')
    s << "Constraints that match no available version: #{pretty}\n"
  end
  s << "Demand that cannot be met: #{unsatisfiable_demand}\n" if unsatisfiable_demand
  unless artifacts_with_no_satisfactory_version.empty?
    s << "Artifacts for which there are conflicting dependencies: #{artifacts_with_no_satisfactory_version.join(',')}"
  end
  s
end