我是Delayed Jobs的新用户,不确定是否正确执行此操作。在数据库中找不到延迟的工作记录
工人
class BillingFailedEmailWorker < BaseWorker
attr_accessor :car
def initialize(car)
@car = car
end
def billing_failed_for_subscriptions
StripeMailer::billing_failed_for_subscriptions(car.owner.email).deliver
end
def perform
self.class.new(car).delay(
run_at: DateTime.now + 1.week,
queue: "Failed Subscription"
).billing_failed_for_subscriptions
end
end
梅勒
class StripeMailer < ActionMailer::Base
default from: Settings.default_from_email
def billing_failed_for_subscriptions(email)
mail to: email, subject: 'Autobrain Subscription Renewal Failed'
end
end
billing_failed_for_subscriptions
也明显对应正确的邮件视图。
我的问题是,当我运行BillingFailedEmailWorker.new(Car.last).perform
我看到了命令Delayed::Backend::ActiveRecord::Job
正确执行,但是当我运行Delayed::Backend::ActiveRecord::Job.last
或Delayed::Job.last
我没有看到我刚刚创建的工作。
难道这是我的Rails环境正在开发的问题还是有什么我失踪?
看起来,如果我在'self.class.new(car).delay(...)。billing_failed_for_subscriptions'的末尾添加'.save',它会在数据库中保存一条记录。 –
也许你通过'Delayed :: Worker.delay_jobs = false'来禁用全球的延迟工作来达到开发目的?在那种情况下,作业不会被保存,而是立即被调用。 – BoraMa
这就是它。它在开发中被设置为错误。谢谢 –