songtianlun
ead795266e
- Removed conditional check for production environment in the initializer to ensure the sitemap refresh worker always runs at startup. - Renamed Sidekiq configuration file from sidekiq.yml to sidekiq_scheduler.yml to better reflect its purpose. These changes streamline the initialization process for scheduled tasks and enhance the clarity of the configuration files used in the project.
40 lines
1.3 KiB
Ruby
40 lines
1.3 KiB
Ruby
class RefreshSitemapWorker
|
|
include Sidekiq::Worker
|
|
|
|
def perform
|
|
host = Rails.env.production? ? "https://todayaiweather.com" : "http://127.0.0.1:3000"
|
|
Rails.application.routes.default_url_options[:host] = host
|
|
SitemapGenerator::Sitemap.default_host = host
|
|
SitemapGenerator::Sitemap.create do
|
|
add root_path, changefreq: "daily", priority: 1.0
|
|
add cities_path, changefreq: "daily", priority: 0.9
|
|
add arts_path, changefreq: "daily", priority: 0.9
|
|
|
|
City.find_each do |city|
|
|
add city_path(city),
|
|
changefreq: "daily",
|
|
priority: 0.8,
|
|
lastmod: city.updated_at
|
|
end
|
|
|
|
WeatherArt.includes(:city).find_each do |art|
|
|
if art.image.attached?
|
|
add city_weather_art_path(art.city, art),
|
|
changefreq: "daily",
|
|
priority: 0.7,
|
|
lastmod: art.updated_at,
|
|
images: [ {
|
|
loc: url_for(art.image),
|
|
title: "#{art.city.name} Weather Art - #{art.weather_date.strftime('%B %d, %Y')}"
|
|
} ]
|
|
end
|
|
end
|
|
end
|
|
|
|
# SitemapGenerator::Sitemap.ping_search_engines if Rails.env.production?
|
|
Rails.logger.info "Sitemap has been generated successfully"
|
|
rescue => e
|
|
Rails.logger.error "Error refreshing sitemap: #{e.message}"
|
|
end
|
|
end
|