Cache default country simply in memory

This simplifies the code, avoids a method naming collision with Rails
and should be faster as well.
This commit is contained in:
Maikel Linke
2024-01-04 13:45:36 +11:00
parent 759aa684d6
commit cb3cd3e7ea
2 changed files with 5 additions and 8 deletions

View File

@@ -6,12 +6,6 @@ module Spree
validates :name, :iso_name, presence: true
def self.cached_find_by(attrs)
Rails.cache.fetch("countries/#{attrs.hash}", expires_in: 1.hour) do
find_by(attrs)
end
end
def <=>(other)
name <=> other.name
end

View File

@@ -10,7 +10,10 @@ class DefaultCountry
end
def self.country
Spree::Country.cached_find_by(iso: ENV.fetch("DEFAULT_COUNTRY_CODE",
nil)) || Spree::Country.first
# Changing ENV requires restarting the process.
iso = ENV.fetch("DEFAULT_COUNTRY_CODE", nil)
# When ENV changes on restart, this cache will be reset as well.
@country ||= Spree::Country.find_by(iso:) || Spree::Country.first
end
end