Class: Gemkeeper::CompactIndexServer::IndexMerger

Inherits:
Object
  • Object
show all
Defined in:
lib/gemkeeper/compact_index_server/index_merger.rb

Overview

Generates the merged /versions and /names index files, combining upstream RubyGems.org data (refreshed on a TTL) with the locally-hosted private gems.

Constant Summary collapse

VERSIONS_TTL =

30 minutes

1800
NAMES_TTL =

60 minutes

3600

Instance Method Summary collapse

Constructor Details

#initialize(store, client) ⇒ IndexMerger

Returns a new instance of IndexMerger.



15
16
17
18
19
20
# File 'lib/gemkeeper/compact_index_server/index_merger.rb', line 15

def initialize(store, client)
  @store         = store
  @client        = client
  @versions_etag = store.etag_for(:versions_merged)
  @names_etag    = store.etag_for(:names_merged)
end

Instance Method Details

#names(private_names) ⇒ Object

Returns etag: for the merged /names file.



30
31
32
33
34
# File 'lib/gemkeeper/compact_index_server/index_merger.rb', line 30

def names(private_names)
  refresh(:names, "/names", NAMES_TTL)
  regenerate_names(private_names)
  { path: @store.path(:names_merged), etag: @names_etag }
end

#versions(private_gems) ⇒ Object

Returns etag: for the merged /versions file.



23
24
25
26
27
# File 'lib/gemkeeper/compact_index_server/index_merger.rb', line 23

def versions(private_gems)
  refresh(:versions, "/versions", VERSIONS_TTL)
  regenerate_versions(private_gems)
  { path: @store.path(:versions_merged), etag: @versions_etag }
end