Class: GemData

Inherits:
Object
  • Object
show all
Defined in:
lib/gem_velocity/gem_data.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(gem_name) ⇒ GemData

Returns a new instance of GemData.



7
8
9
# File 'lib/gem_velocity/gem_data.rb', line 7

def initialize(gem_name)
  @gem_name = gem_name
end

Instance Attribute Details

#gem_nameObject (readonly)

Returns the value of attribute gem_name.



5
6
7
# File 'lib/gem_velocity/gem_data.rb', line 5

def gem_name
  @gem_name
end

Instance Method Details

#downloads_metadata(version, start_time, end_time) ⇒ Object



40
41
42
43
44
45
46
# File 'lib/gem_velocity/gem_data.rb', line 40

def (version, start_time, end_time)
  # cache api call.
  @downloads_metadata ||= {}
  key = "#{version}-#{start_time}-#{end_time}"
  return @downloads_metadata[key] if @downloads_metadata[key]
  @downloads_metadata[key] ||= Gems.downloads(gem_name, version, start_time, end_time).to_a
end

#total_for_version(version) ⇒ Object



33
34
35
36
37
38
# File 'lib/gem_velocity/gem_data.rb', line 33

def total_for_version(version)
  @total_for_version ||= {}
  key = "#{version}"
  return @total_for_version[key] if @total_for_version[key]
  @total_for_version[key] ||= Gems.total_downloads(gem_name, version)
end

#versionsObject



11
12
13
# File 'lib/gem_velocity/gem_data.rb', line 11

def versions
  .map{|v| v["number"]}
end

#versions_built_atObject



15
16
17
18
19
# File 'lib/gem_velocity/gem_data.rb', line 15

def versions_built_at
  h = {}
  .map{|v| h.merge!(v["number"] => v["built_at"] )}
  h
end

#versions_metadataObject



21
22
23
24
25
26
27
28
29
30
31
# File 'lib/gem_velocity/gem_data.rb', line 21

def 
  # cache api call.
  @versions_metadata ||= Gems.versions(gem_name)
  # it should be a hash
  if @versions_metadata.is_a?(String)
    if @versions_metadata.match(/This rubygem could not be found/)
      raise(NoSuchGem, "This rubygem could not be found")
    end
  end
  @versions_metadata
end