class SidekiqUniqueJobs::VersionCheck

Handles checking if a version is compliant with given constraint

@author Mikael Henriksson <mikael@mhenrixon.com>

Constants

PATTERN

Attributes

match[R]

@!attribute [r] match

@return [String] a version constraint `>= 5.0.0 <= 5.1.1`
version[R]

@!attribute [r] version

@return [String] a version string `5.0.0`

Public Class Methods

new(version, constraint) click to toggle source

Initialize a new VersionCheck instance

@param [String] version a version string `5.0.0` @param [String] constraint a version constraint `>= 5.0.0 <= 5.1.1`

# File lib/sidekiq_unique_jobs/version_check.rb, line 65
def initialize(version, constraint)
  @version   = Gem::Version.new(version)
  @match     = PATTERN.match(constraint.to_s)

  raise ArgumentError, "A version (eg. 5.0) is required to compare against" unless @version
  raise ArgumentError, "At least one operator and version is required (eg. >= 5.1)" unless constraint
end
satisfied?(version, constraint) click to toggle source

Checks if a version is constraint is satisfied

@example A satisfied constraint

VersionCheck.satisfied?("5.0.0", ">= 4.0.0") #=> true

@example An unsatisfied constraint

VersionCheck.satisfied?("5.0.0", "<= 4.0.0") #=> false

@param [String] version a version string `5.0.0` @param [String] constraint a version constraint `>= 5.0.0 <= 5.1.1`

@return [true, false] <description>

# File lib/sidekiq_unique_jobs/version_check.rb, line 27
def self.satisfied?(version, constraint)
  new(version, constraint).satisfied?
end
unfulfilled?(version, constraint) click to toggle source

Checks if a version is constraint is unfulfilled

@example A satisfied constraint

VersionCheck.unfulfilled?("5.0.0", ">= 4.0.0") #=> false

@example An unfulfilled constraint

VersionCheck.unfulfilled?("5.0.0", "<= 4.0.0") #=> true

@param [String] version a version string `5.0.0` @param [String] constraint a version constraint `>= 5.0.0 <= 5.1.1`

@return [true, false] <description>

# File lib/sidekiq_unique_jobs/version_check.rb, line 46
def self.unfulfilled?(version, constraint)
  !satisfied?(version, constraint)
end

Public Instance Methods

satisfied?() click to toggle source

Checks if all constraints were met

@return [true,false]

# File lib/sidekiq_unique_jobs/version_check.rb, line 79
def satisfied?
  constraints.all? do |expected, operator|
    compare(expected, operator)
  end
end

Private Instance Methods

compare(expected, operator) click to toggle source
# File lib/sidekiq_unique_jobs/version_check.rb, line 87
def compare(expected, operator)
  Gem::Version.new(version).send(operator, Gem::Version.new(expected))
end
constraints() click to toggle source
# File lib/sidekiq_unique_jobs/version_check.rb, line 91
def constraints
  result = { version_one => operator_one }
  result[version_two] = operator_two if version_two

  result
end
operator_one() click to toggle source
# File lib/sidekiq_unique_jobs/version_check.rb, line 102
def operator_one
  match[:operator1]
end
operator_two() click to toggle source
# File lib/sidekiq_unique_jobs/version_check.rb, line 110
def operator_two
  match[:operator2]
end
version_one() click to toggle source
# File lib/sidekiq_unique_jobs/version_check.rb, line 98
def version_one
  match[:version1]
end
version_two() click to toggle source
# File lib/sidekiq_unique_jobs/version_check.rb, line 106
def version_two
  match[:version2]
end