Class: LibyearBundler::ReleaseDateCache

Inherits:
Object
  • Object
show all
Defined in:
lib/libyear_bundler/release_date_cache.rb

Overview

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

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data) ⇒ ReleaseDateCache

Returns a new instance of ReleaseDateCache.

Parameters:

  • data (Hash<String,Date>)

Raises:

  • (TypeError)


8
9
10
11
12
13
# File 'lib/libyear_bundler/release_date_cache.rb', line 8

def initialize(data)
  raise TypeError unless data.is_a?(Hash)
  @data = data
  uri = URI('https://rubygems.org')
  @http = Net::HTTP.start(uri.host, uri.port, use_ssl: true)
end

Class Method Details

.load(path) ⇒ Object



33
34
35
36
37
38
39
# File 'lib/libyear_bundler/release_date_cache.rb', line 33

def load(path)
  if File.exist?(path)
    new(YAMLLoader.safe_load(File.read(path)))
  else
    new({})
  end
end

Instance Method Details

#[](name, version) ⇒ Object



15
16
17
18
19
20
21
22
# File 'lib/libyear_bundler/release_date_cache.rb', line 15

def [](name, version)
  key = format('%s-%s', name, version)
  if @data.key?(key)
    @data[key]
  else
    @data[key] = release_date(name, version)
  end
end

#empty?Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/libyear_bundler/release_date_cache.rb', line 24

def empty?
  @data.empty?
end

#save(path) ⇒ Object



42
43
44
45
46
47
48
49
# File 'lib/libyear_bundler/release_date_cache.rb', line 42

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

#sizeObject



28
29
30
# File 'lib/libyear_bundler/release_date_cache.rb', line 28

def size
  @data.size
end