songtianlun
f477f205ab
- update default host in sitemap generator - refresh sitemap on worker with new host These changes allow the sitemap to be correctly generated for different environments and to handle the new host correctly, which was the motivation behind this update. No other side effects are expected.
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
|