Class: BlogUpdateWorker
- Inherits:
-
Object
- Object
- BlogUpdateWorker
- Includes:
- Sidekiq::Worker
- Defined in:
- app/workers/blog_update_worker.rb
Overview
Creates a CampaignEmail on Campaign 527 each Monday at 2pm Central when new posts exist.
The campaign system handles delivery, suppression, dedup, and open/click tracking.
Constant Summary collapse
- CAMPAIGN_ID =
527- MASTER_TEMPLATE_SYSTEM_CODE =
'BLOG_UPDATE'- RECENT_ARTICLES_COUNT =
5- SENDER_EMAIL =
'"WarmlyYours" <marketing@warmlyyours.com>'
Instance Method Summary collapse
Instance Method Details
#perform ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'app/workers/blog_update_worker.rb', line 15 def perform new_posts = posts_since_last_monday return if new_posts.empty? master_template = EmailTemplate.find_by(system_code: MASTER_TEMPLATE_SYSTEM_CODE) unless master_template&.body_v4_email.present? logger.error '[BlogUpdateWorker] BLOG_UPDATE master template not found or has no body_v4_email' return end recent_posts = Post.published .where.not(id: new_posts.map(&:id)) .order(published_at: :desc) .limit(RECENT_ARTICLES_COUNT) rendered_body = render_weekly_body(master_template, new_posts, recent_posts) campaign_email = create_campaign_email(master_template, rendered_body, new_posts) logger.info "[BlogUpdateWorker] Created CampaignEmail ##{campaign_email.id} with #{new_posts.size} new post(s)" campaign_email.transmit_now! end |