私は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
これはそうだった。開発時にfalseに設定されました。おかげ –