Class: SidekiqUniqueJobs::VersionCheck

Inherits:
Object
  • Object
show all
Defined in:
lib/sidekiq_unique_jobs/version_check.rb

Overview

Thin wrapper around Gem::Requirement for version constraint checking

Author:

  • Mikael Henriksson <mikael@mhenrixon.com>

Class Method Summary collapse

Class Method Details

.satisfied?(version, constraint) ⇒ true, false

Check if a version satisfies a constraint

Examples:

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

Parameters:

  • version (String)

    the version to check

  • constraint (String)

    one or more version constraints (space or && separated)

Returns:

  • (true, false)


18
19
20
21
22
23
24
25
# File 'lib/sidekiq_unique_jobs/version_check.rb', line 18

def self.satisfied?(version, constraint)
  str = constraint.to_s.strip
  return Gem::Requirement.new(">= 0").satisfied_by?(Gem::Version.new(version)) if str.empty?

  parts = str.split("&&").flat_map { |s| s.split(",") }.map(&:strip).reject(&:empty?)
  parts = split_space_separated(str) if parts.size == 1
  Gem::Requirement.new(*parts).satisfied_by?(Gem::Version.new(version))
end

.unfulfilled?(version, constraint) ⇒ true, false

Inverse of satisfied?

Returns:

  • (true, false)


48
49
50
# File 'lib/sidekiq_unique_jobs/version_check.rb', line 48

def self.unfulfilled?(version, constraint)
  !satisfied?(version, constraint)
end