Farmbot-Web-App/app/mailers/log_delivery_mailer.rb

23 lines
911 B
Ruby

class LogDeliveryMailer < ApplicationMailer
WHOAH = "Device %s is sending too many emails!!! (> 20 / hr)"
def log_digest(device)
query_params = { sent_at: 1.hours.ago..Time.now, device_id: device.id }
sent_this_hour = LogDispatch.where(query_params).count
too_many = sent_this_hour > LogDispatch.max_per_hour
raise LogDispatch::RateLimitError, WHOAH % [device.id] if too_many
ld = LogDispatch.where(sent_at: nil, device: device)
if(ld.any?)
logs = Log
.where(id: ld.pluck(:log_id))
.where
.not(Log::IS_FATAL_EMAIL)
@emails = device.users.pluck(:email)
@messages = logs.map(&:message)
@device_name = device.name || "Farmbot"
mail(to: @emails, subject: "🌱 New message from #{@device_name}!")
ld.update_all(sent_at: Time.now)
end
end
end