class LibyearBundler::ReleaseDateCache

A cache of release dates by name and version, for both gems and rubies.

Public Class Methods

load(path) click to toggle source
# File lib/libyear_bundler/release_date_cache.rb, line 22
def load(path)
  if File.exist?(path)
    new(YAML.safe_load(File.read(path), [Date]))
  else
    new({})
  end
end
new(data) click to toggle source

@param data [Hash<String,Date>]

# File lib/libyear_bundler/release_date_cache.rb, line 7
def initialize(data)
  raise TypeError unless data.is_a?(Hash)
  @data = data
end

Public Instance Methods

[](name, version) click to toggle source
# File lib/libyear_bundler/release_date_cache.rb, line 12
def [](name, version)
  key = format('%s-%s', name, version)
  if @data.key?(key)
    @data[key]
  else
    @data[key] = release_date(name, version)
  end
end
save(path) click to toggle source
# File lib/libyear_bundler/release_date_cache.rb, line 31
def save(path)
  content = YAML.dump(@data)
  begin
    File.write(path, content)
  rescue StandardError => e
    warn format('Unable to update cache: %s, %s', path, e.message)
  end
end

Private Instance Methods

release_date(name, version) click to toggle source
# File lib/libyear_bundler/release_date_cache.rb, line 42
def release_date(name, version)
  if name == 'ruby'
    Models::Ruby.release_date(version)
  else
    Models::Gem.release_date(name, version)
  end
end