class ActiveAdmin::Dependency::Matcher

def <=>(other)

def <=>(other)
  if @spec
    @spec.version <=> Gem::Version.create(other)
  else
    # you'd otherwise get an unhelpful error message:
    # ArgumentError: comparison of ActiveAdmin::Dependency::Matcher with 2 failed
    raise DependencyError, "To use #{@name} you need to specify it in your Gemfile."
  end
end

def initialize(name)

def initialize(name)
  @name, @spec = name, Gem.loaded_specs[name]
end

def inspect

def inspect
  info = @spec ? "#{@spec.name} #{@spec.version}" : '(missing)'
  "<ActiveAdmin::Dependency::Matcher for #{info}>"
end

def match!(*reqs)

def match!(*reqs)
  unless @spec
    raise DependencyError, "To use #{@name} you need to specify it in your Gemfile."
  end
  unless match? reqs
    raise DependencyError, "You provided #{@spec.name} #{@spec.version} but we need: #{reqs.join ', '}."
  end
end

def match?(*reqs)

def match?(*reqs)
  !!@spec && Gem::Requirement.create(reqs).satisfied_by?(@spec.version)
end