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