From 974f45a4c91ebedfcf730355a006999e75f34f42 Mon Sep 17 00:00:00 2001
From: Eugene Burmakin
Date: Tue, 7 Jan 2025 13:41:09 +0100
Subject: [PATCH] Remove REVERSE_GEOCODING_ENABLED env var
---
CHANGELOG.md | 1 +
app/jobs/reverse_geocoding_job.rb | 2 +-
app/models/place.rb | 2 +-
app/models/point.rb | 2 +-
app/models/visit.rb | 2 +-
app/services/visits/suggest.rb | 6 +-----
app/views/stats/_stat.html.erb | 2 +-
app/views/stats/index.html.erb | 4 ++--
config/initializers/01_constants.rb | 2 --
config/initializers/03_dawarich_settings.rb | 8 ++++----
spec/jobs/reverse_geocoding_job_spec.rb | 8 ++++----
spec/lib/dawarich_settings_spec.rb | 6 ++++++
spec/services/visits/suggest_spec.rb | 5 ++---
13 files changed, 25 insertions(+), 25 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d1952895..f5e7be49 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -17,6 +17,7 @@ You may now use Geoapify API for reverse geocoding. To obtain an API key, sign u
- Photon ENV vars from the `.env.development` and docker-compose.yml files.
- `APPLICATION_HOST` env var.
+- `REVERSE_GEOCODING_ENABLED` env var.
# 0.21.4 - 2025-01-05
diff --git a/app/jobs/reverse_geocoding_job.rb b/app/jobs/reverse_geocoding_job.rb
index d368720f..8c2a232b 100644
--- a/app/jobs/reverse_geocoding_job.rb
+++ b/app/jobs/reverse_geocoding_job.rb
@@ -4,7 +4,7 @@ class ReverseGeocodingJob < ApplicationJob
queue_as :reverse_geocoding
def perform(klass, id)
- return unless REVERSE_GEOCODING_ENABLED
+ return unless DawarichSettings.reverse_geocoding_enabled?
rate_limit_for_photon_api
diff --git a/app/models/place.rb b/app/models/place.rb
index a4ff8970..2ed0aa2d 100644
--- a/app/models/place.rb
+++ b/app/models/place.rb
@@ -13,7 +13,7 @@ class Place < ApplicationRecord
enum :source, { manual: 0, photon: 1 }
def async_reverse_geocode
- return unless REVERSE_GEOCODING_ENABLED
+ return unless DawarichSettings.reverse_geocoding_enabled?
ReverseGeocodingJob.perform_later(self.class.to_s, id)
end
diff --git a/app/models/point.rb b/app/models/point.rb
index bec501b4..040e6d41 100644
--- a/app/models/point.rb
+++ b/app/models/point.rb
@@ -34,7 +34,7 @@ class Point < ApplicationRecord
end
def async_reverse_geocode
- return unless REVERSE_GEOCODING_ENABLED
+ return unless DawarichSettings.reverse_geocoding_enabled?
ReverseGeocodingJob.perform_later(self.class.to_s, id)
end
diff --git a/app/models/visit.rb b/app/models/visit.rb
index ddd6124f..f46d219b 100644
--- a/app/models/visit.rb
+++ b/app/models/visit.rb
@@ -40,7 +40,7 @@ class Visit < ApplicationRecord
end
def async_reverse_geocode
- return unless REVERSE_GEOCODING_ENABLED
+ return unless DawarichSettings.reverse_geocoding_enabled?
return if place.blank?
ReverseGeocodingJob.perform_later('place', place_id)
diff --git a/app/services/visits/suggest.rb b/app/services/visits/suggest.rb
index f68bffce..4d02a45c 100644
--- a/app/services/visits/suggest.rb
+++ b/app/services/visits/suggest.rb
@@ -20,7 +20,7 @@ class Visits::Suggest
create_visits_notification(user)
- return nil unless reverse_geocoding_enabled?
+ return nil unless DawarichSettings.reverse_geocoding_enabled?
reverse_geocode(visits)
end
@@ -68,10 +68,6 @@ class Visits::Suggest
visits.each(&:async_reverse_geocode)
end
- def reverse_geocoding_enabled?
- ::REVERSE_GEOCODING_ENABLED && ::PHOTON_API_HOST.present?
- end
-
def create_visits_notification(user)
content = <<~CONTENT
New visits have been suggested based on your location data from #{Time.zone.at(start_at)} to #{Time.zone.at(end_at)}. You can review them on the Visits page.
diff --git a/app/views/stats/_stat.html.erb b/app/views/stats/_stat.html.erb
index f8e59e04..8ac892f2 100644
--- a/app/views/stats/_stat.html.erb
+++ b/app/views/stats/_stat.html.erb
@@ -12,7 +12,7 @@
<%= stat.distance %><%= DISTANCE_UNIT %>
- <% if REVERSE_GEOCODING_ENABLED %>
+ <% if DawarichSettings.reverse_geocoding_enabled? %>
<%= countries_and_cities_stat_for_month(stat) %>
diff --git a/app/views/stats/index.html.erb b/app/views/stats/index.html.erb
index d67037de..28da8b9f 100644
--- a/app/views/stats/index.html.erb
+++ b/app/views/stats/index.html.erb
@@ -16,7 +16,7 @@
Geopoints tracked
- <% if REVERSE_GEOCODING_ENABLED %>
+ <% if DawarichSettings.reverse_geocoding_enabled? %>
<%= render 'stats/reverse_geocoding_stats' %>
<% end %>
@@ -39,7 +39,7 @@
<%= number_with_delimiter year_distance_stat(year, current_user) %><%= DISTANCE_UNIT %>
<% end %>
- <% if REVERSE_GEOCODING_ENABLED %>
+ <% if DawarichSettings.reverse_geocoding_enabled? %>
<%= countries_and_cities_stat_for_year(year, stats) %>
diff --git a/config/initializers/01_constants.rb b/config/initializers/01_constants.rb
index eef38298..ce760238 100644
--- a/config/initializers/01_constants.rb
+++ b/config/initializers/01_constants.rb
@@ -9,8 +9,6 @@ TELEMETRY_STRING = Base64.encode64('IjVFvb8j3P9-ArqhSGav9j8YcJaQiuNIzkfOPKQDk2lv
TELEMETRY_URL = 'https://influxdb2.frey.today/api/v2/write'
# Reverse geocoding settings
-REVERSE_GEOCODING_ENABLED = ENV.fetch('REVERSE_GEOCODING_ENABLED', 'true') == 'true'
-
PHOTON_API_HOST = ENV.fetch('PHOTON_API_HOST', nil)
PHOTON_API_KEY = ENV.fetch('PHOTON_API_KEY', nil)
PHOTON_API_USE_HTTPS = ENV.fetch('PHOTON_API_USE_HTTPS', 'true') == 'true'
diff --git a/config/initializers/03_dawarich_settings.rb b/config/initializers/03_dawarich_settings.rb
index 9d632067..87cf4817 100644
--- a/config/initializers/03_dawarich_settings.rb
+++ b/config/initializers/03_dawarich_settings.rb
@@ -3,19 +3,19 @@
class DawarichSettings
class << self
def reverse_geocoding_enabled?
- photon_enabled? || geoapify_enabled?
+ @reverse_geocoding_enabled ||= photon_enabled? || geoapify_enabled?
end
def photon_enabled?
- PHOTON_API_HOST.present?
+ @photon_enabled ||= PHOTON_API_HOST.present?
end
def photon_uses_komoot_io?
- PHOTON_API_HOST == 'photon.komoot.io'
+ @photon_uses_komoot_io ||= PHOTON_API_HOST == 'photon.komoot.io'
end
def geoapify_enabled?
- GEOAPIFY_API_KEY.present?
+ @geoapify_enabled ||= GEOAPIFY_API_KEY.present?
end
end
end
diff --git a/spec/jobs/reverse_geocoding_job_spec.rb b/spec/jobs/reverse_geocoding_job_spec.rb
index dfd3da8e..b6420be0 100644
--- a/spec/jobs/reverse_geocoding_job_spec.rb
+++ b/spec/jobs/reverse_geocoding_job_spec.rb
@@ -12,8 +12,8 @@ RSpec.describe ReverseGeocodingJob, type: :job do
allow(Geocoder).to receive(:search).and_return([double(city: 'City', country: 'Country')])
end
- context 'when REVERSE_GEOCODING_ENABLED is false' do
- before { stub_const('REVERSE_GEOCODING_ENABLED', false) }
+ context 'when reverse geocoding is disabled' do
+ before { allow(DawarichSettings).to receive(:reverse_geocoding_enabled?).and_return(false) }
it 'does not update point' do
expect { perform }.not_to(change { point.reload.city })
@@ -28,8 +28,8 @@ RSpec.describe ReverseGeocodingJob, type: :job do
end
end
- context 'when REVERSE_GEOCODING_ENABLED is true' do
- before { stub_const('REVERSE_GEOCODING_ENABLED', true) }
+ context 'when reverse geocoding is enabled' do
+ before { allow(DawarichSettings).to receive(:reverse_geocoding_enabled?).and_return(true) }
let(:stubbed_geocoder) { OpenStruct.new(data: { city: 'City', country: 'Country' }) }
diff --git a/spec/lib/dawarich_settings_spec.rb b/spec/lib/dawarich_settings_spec.rb
index 304ac2de..bce61846 100644
--- a/spec/lib/dawarich_settings_spec.rb
+++ b/spec/lib/dawarich_settings_spec.rb
@@ -3,6 +3,12 @@
require 'rails_helper'
RSpec.describe DawarichSettings do
+ before do
+ described_class.instance_variables.each do |ivar|
+ described_class.remove_instance_variable(ivar)
+ end
+ end
+
describe '.reverse_geocoding_enabled?' do
context 'when photon is enabled' do
before do
diff --git a/spec/services/visits/suggest_spec.rb b/spec/services/visits/suggest_spec.rb
index 00c20c81..31d76b2e 100644
--- a/spec/services/visits/suggest_spec.rb
+++ b/spec/services/visits/suggest_spec.rb
@@ -44,8 +44,7 @@ RSpec.describe Visits::Suggest do
context 'when reverse geocoding is enabled' do
before do
- stub_const('REVERSE_GEOCODING_ENABLED', true)
- stub_const('PHOTON_API_HOST', 'http://localhost:2323')
+ allow(DawarichSettings).to receive(:reverse_geocoding_enabled?).and_return(true)
end
it 'reverse geocodes visits' do
@@ -57,7 +56,7 @@ RSpec.describe Visits::Suggest do
context 'when reverse geocoding is disabled' do
before do
- stub_const('REVERSE_GEOCODING_ENABLED', false)
+ allow(DawarichSettings).to receive(:reverse_geocoding_enabled?).and_return(false)
end
it 'does not reverse geocode visits' do