Class: Gemstash::SpecsBuilder

Inherits:
Object
  • Object
show all
Includes:
Env::Helper
Defined in:
lib/gemstash/specs_builder.rb

Overview

Builds a Marshal’ed and GZipped array of arrays containing specs as:

name, Gem::Version, platform

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(auth, prerelease: false, latest: false) ⇒ SpecsBuilder

Returns a new instance of SpecsBuilder.



28
29
30
31
32
# File 'lib/gemstash/specs_builder.rb', line 28

def initialize(auth, prerelease: false, latest: false)
  @auth = auth
  @prerelease = prerelease
  @latest = latest
end

Instance Attribute Details

#resultObject (readonly)

Returns the value of attribute result.



12
13
14
# File 'lib/gemstash/specs_builder.rb', line 12

def result
  @result
end

Class Method Details

.invalidate_storedObject



21
22
23
24
25
26
# File 'lib/gemstash/specs_builder.rb', line 21

def self.invalidate_stored
  storage = Gemstash::Storage.for("private").for("specs_collection")
  storage.resource("specs.4.8.gz").delete(:specs)
  storage.resource("latest_specs.4.8.gz").delete(:specs)
  storage.resource("prerelease_specs.4.8.gz").delete(:specs)
end

.serve(app) ⇒ Object



14
15
16
17
18
19
# File 'lib/gemstash/specs_builder.rb', line 14

def self.serve(app)
  prerelease = app.params.fetch(:prerelease, false)
  latest = app.params.fetch(:latest, false)
  app.content_type "application/octet-stream"
  new(app.auth, prerelease: prerelease, latest: latest).serve
end

Instance Method Details

#serveObject



34
35
36
37
38
39
40
41
42
43
44
# File 'lib/gemstash/specs_builder.rb', line 34

def serve
  check_auth if gemstash_env.config[:protected_fetch]
  fetch_from_storage
  return result if result

  fetch_versions
  marshal
  gzip
  store_result
  result
end