Class: SeoGoogleAdsSyncWorker
- Inherits:
-
Object
- Object
- SeoGoogleAdsSyncWorker
- Includes:
- Sidekiq::Status::Worker, Sidekiq::Worker
- Defined in:
- app/workers/seo_google_ads_sync_worker.rb
Overview
Syncs paid search data from Google Ads into the SEO pipeline.
Runs at 2:30 AM alongside Ahrefs so data is ready for 3:00 AM AI analysis.
Instance Method Summary collapse
Instance Method Details
#perform(options = {}) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'app/workers/seo_google_ads_sync_worker.rb', line 11 def perform( = {}) = .with_indifferent_access total 2 at 1, 'Syncing Google Ads metrics...' result = Seo::GoogleAdsSyncService.new(.slice(:lookback_days)).process at 2, 'Complete' store info_message: "Google Ads: #{result.pages_updated} pages, " \ "#{result.keywords_enriched} keywords enriched, " \ "#{result.keywords_created} keywords created" store pages_updated: result.pages_updated store keywords_enriched: result.keywords_enriched store keywords_created: result.keywords_created store error_count: result.errors.size store error_sources: result.errors.map { |e| e[:source] }.uniq Rails.logger.info "[SeoGoogleAdsSyncWorker] Completed: pages=#{result.pages_updated} " \ "enriched=#{result.keywords_enriched} created=#{result.keywords_created} " \ "errors=#{result.errors.size}" rescue StandardError => e Rails.logger.error "[SeoGoogleAdsSyncWorker] Failed: #{e.}" store info_message: "Google Ads sync failed: #{e.}" raise end |