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