Class: GemXray::StdgemsClient

Inherits:
Object
  • Object
show all
Defined in:
lib/gemxray/stdgems_client.rb

Constant Summary collapse

CACHE_TTL =
86_400
DEFAULT_GEMS_URI =
URI("https://stdgems.org/default_gems.json")
BUNDLED_GEMS_URI =
URI("https://stdgems.org/bundled_gems.json")
FALLBACK_DEFAULT_GEMS =
{
  "3.1" => %w[
    abbrev base64 benchmark bigdecimal cgi csv date delegate did_you_mean
    digest drb english erb error_highlight fileutils find io-console
    irb json logger mutex_m net-http net-imap net-pop net-protocol
    net-smtp observer open-uri open3 openssl optparse ostruct pp prettyprint
    prime pstore psych rake rdoc readline resolv rexml rss ruby2_keywords
    securerandom set shell socket stringio strscan tempfile time timeout
    tmpdir tsort typeprof un uri weakref yaml zlib
  ],
  "3.2" => %w[
    abbrev base64 benchmark bigdecimal cgi csv date delegate did_you_mean
    digest drb english erb error_highlight fileutils find io-console
    irb json logger mutex_m net-http net-imap net-pop net-protocol
    net-smtp observer open-uri open3 openssl optparse ostruct pp prettyprint
    prime pstore psych rake rdoc readline resolv rexml rss securerandom
    set shell socket stringio strscan syntax_suggest tempfile time timeout
    tmpdir tsort un uri weakref yaml zlib
  ],
  "3.3" => %w[
    abbrev base64 benchmark bigdecimal cgi csv date delegate did_you_mean
    digest drb english erb error_highlight fileutils find io-console
    irb json logger mutex_m net-http net-imap net-pop net-protocol
    net-smtp observer open-uri open3 openssl optparse ostruct pp prettyprint
    prime pstore psych rake rdoc readline resolv rexml rss securerandom
    set shell socket stringio strscan syntax_suggest tempfile time timeout
    tmpdir tsort un uri weakref yaml zlib
  ],
  "4.0" => Gem::Specification.select { |spec| spec.respond_to?(:default_gem?) && spec.default_gem? }.map(&:name).sort
}.freeze
FALLBACK_BUNDLED_GEMS =
{
  "3.1" => %w[debug matrix minitest power_assert racc rake rbs rexml test-unit typeprof],
  "3.2" => %w[debug matrix minitest power_assert racc rake rbs rexml test-unit typeprof],
  "3.3" => %w[debug matrix minitest power_assert racc rake rbs rexml test-unit typeprof],
  "4.0" => %w[debug matrix minitest power_assert racc rake rbs rexml test-unit typeprof]
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(cache_dir: File.join(Dir.home, ".gemxray", "cache")) ⇒ StdgemsClient

Returns a new instance of StdgemsClient.



50
51
52
# File 'lib/gemxray/stdgems_client.rb', line 50

def initialize(cache_dir: File.join(Dir.home, ".gemxray", "cache"))
  @cache_dir = cache_dir
end

Instance Method Details

#bundled_gems_for(version) ⇒ Object



63
64
65
66
67
68
69
70
# File 'lib/gemxray/stdgems_client.rb', line 63

def bundled_gems_for(version)
  version_key = normalize_version(version)
  extracted = extract_gems(payload_for(:bundled), version_key, collection_keys: %w[bundled_gems default_gems])

  return extracted if extracted && !extracted.empty?

  fallback_bundled_gems(version_key)
end

#default_gems_for(version) ⇒ Object



54
55
56
57
58
59
60
61
# File 'lib/gemxray/stdgems_client.rb', line 54

def default_gems_for(version)
  version_key = normalize_version(version)
  extracted = extract_gems(payload_for(:default), version_key, collection_keys: %w[default_gems])

  return extracted if extracted && !extracted.empty?

  fallback_default_gems(version_key)
end