Class: Spree::Admin::Updater
- Inherits:
-
Object
- Object
- Spree::Admin::Updater
- Defined in:
- app/models/spree/admin/updater.rb
Constant Summary collapse
- SPREE_CLOUD_UPDATES_URL =
'https://spreecloud.io/updates.json'.freeze
Class Method Summary collapse
- .current_release ⇒ Object
- .fetch_updates ⇒ Object
- .latest_release ⇒ Object
- .update_available? ⇒ Boolean
Class Method Details
.current_release ⇒ Object
20 21 22 |
# File 'app/models/spree/admin/updater.rb', line 20 def self.current_release @current_release ||= Spree.version end |
.fetch_updates ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'app/models/spree/admin/updater.rb', line 24 def self.fetch_updates @updates ||= Rails.cache.fetch("spree/admin/updater/fetch_updates/#{current_release}", expires_in: 1.day) do uri = URI(SPREE_CLOUD_UPDATES_URL) params = { version: current_release, environment: Rails.env, url: Spree::Store.current.url_or_custom_domain } uri.query = URI.encode_www_form(params) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = uri.scheme == 'https' http.open_timeout = 1 # 1s timeout for opening the connection http.read_timeout = 1 # 1s timeout for reading the response response = http.get(uri) return {} unless response.is_a?(Net::HTTPSuccess) JSON.parse(response.body) end rescue StandardError => e Rails.error.report(e) {} end |
.latest_release ⇒ Object
16 17 18 |
# File 'app/models/spree/admin/updater.rb', line 16 def self.latest_release @latest_release ||= fetch_updates.first end |
.update_available? ⇒ Boolean
12 13 14 |
# File 'app/models/spree/admin/updater.rb', line 12 def self.update_available? fetch_updates.any? end |