Module: Kettle::Dev::GemCoopVersions
- Defined in:
- lib/kettle/dev/gem_coop_versions.rb
Constant Summary collapse
- CACHE_BUST_TTL_SECONDS =
15 * 60
- ENV_REFRESH =
"KETTLE_GEM_COOP_REFRESH"- ENV_MARKER_PATH =
"KETTLE_GEM_COOP_CACHE_BUST_PATH"
Class Method Summary collapse
- .fetch(gem_name, version_hint: nil, refresh: false) ⇒ Object
- .mark_released(gem_name, version) ⇒ Object
- .marker_path ⇒ Object
Class Method Details
.fetch(gem_name, version_hint: nil, refresh: false) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/kettle/dev/gem_coop_versions.rb', line 17 def fetch(gem_name, version_hint: nil, refresh: false) cache_bust = refresh || env_refresh? || fresh_release_marker?(gem_name, version_hint) uri = versions_uri(gem_name, cache_bust: cache_bust) request = Net::HTTP::Get.new(uri) if cache_bust request["Cache-Control"] = "no-cache" request["Pragma"] = "no-cache" end response = Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == "https") do |http| http.request(request) end return nil unless response.is_a?(Net::HTTPSuccess) JSON.parse(response.body) end |
.mark_released(gem_name, version) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/kettle/dev/gem_coop_versions.rb', line 33 def mark_released(gem_name, version) return if gem_name.to_s.empty? || version.to_s.empty? path = marker_path data = read_marker(path) data["releases"] ||= {} data["releases"][gem_name.to_s] = { "version" => version.to_s, "released_at" => Time.now.utc.iso8601 } FileUtils.mkdir_p(File.dirname(path)) File.write(path, JSON.pretty_generate(data) << "\n") rescue => error warn("[kettle-dev] could not update gem.coop cache-bust marker: #{error.class}: #{error.}") if Kettle::Dev::DEBUGGING end |
.marker_path ⇒ Object
49 50 51 52 53 54 55 56 |
# File 'lib/kettle/dev/gem_coop_versions.rb', line 49 def marker_path configured = ENV.fetch(ENV_MARKER_PATH, "").to_s return configured unless configured.empty? state_home = ENV["XDG_STATE_HOME"] state_home = File.join(Dir.home, ".local", "state") if state_home.to_s.empty? File.join(state_home, "kettle-dev", "gem-coop-cache-bust.json") end |