class Bundler::Advise::Advisory

Attributes

gem_spec[RW]

Not always guaranteed to be set, but will be set by GemAdviser when scanning a lockfile.

Public Class Methods

fields() click to toggle source
# File lib/bundler/advise/advisory.rb, line 10
def self.fields
  [:gem, :cve, :cvss_v2, :date, :description, :framework, :osvdb, :patched_versions,
   :platform, :related, :title, :unaffected_versions, :url, :vendor_patch]
end
from_yml(yml_filename) click to toggle source
# File lib/bundler/advise/advisory.rb, line 5
def self.from_yml(yml_filename)
  id = File.basename(yml_filename, '.yml')
  new(YAML.load(File.read(yml_filename)).tap { |h| h[:id] = id })
end
new(fields={}) click to toggle source
# File lib/bundler/advise/advisory.rb, line 22
def initialize(fields={})
  fields.each do |k, v|
    instance_variable_set("@#{k}", v)
  end
end

Public Instance Methods

is_affected?(gem_version) click to toggle source
# File lib/bundler/advise/advisory.rb, line 40
def is_affected?(gem_version)
  is_not_patched?(gem_version) && is_not_unaffected?(gem_version)
end
is_not_patched?(gem_version) click to toggle source
# File lib/bundler/advise/advisory.rb, line 44
def is_not_patched?(gem_version)
  patched_versions.detect do |pv|
    pv.satisfied_by?(Gem::Version.create(gem_version))
  end.nil?
end
is_not_unaffected?(gem_version) click to toggle source
# File lib/bundler/advise/advisory.rb, line 50
def is_not_unaffected?(gem_version)
  unaffected_versions.detect do |pv|
    pv.satisfied_by?(Gem::Version.create(gem_version))
  end.nil?
end
patched_versions() click to toggle source
# File lib/bundler/advise/advisory.rb, line 36
def patched_versions
  Array(@patched_versions).map { |v| Gem::Requirement.create(v.split(",")) }
end
to_yaml() click to toggle source
# File lib/bundler/advise/advisory.rb, line 28
def to_yaml
  self.class.fields.reduce({}) { |h, f| v = instance_variable_get("@#{f}"); h[f.to_s] = v if v; h }.to_yaml
end
unaffected_versions() click to toggle source
# File lib/bundler/advise/advisory.rb, line 32
def unaffected_versions
  Array(@unaffected_versions).map { |v| Gem::Requirement.create(v.split(",")) }
end