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