Ruby on rails 在Rails中,如何安排任务来检查一些数据库值和发送提醒电子邮件?
我需要我的系统每天计算一个会员的会员资格是否即将到期,并向他们发送电子邮件。我该怎么做 例如,如果我使用发条宝石,如何做到这一点?我不太清楚。我们如何通过时钟系统访问模型?我们如何将其用于Rails?我认为ReadMe告诉我们如何在纯Ruby中使用它。请帮忙。我是新来的。如何确保计划程序正在运行?尝试使用 它允许您执行rake任务。您可以从rake任务中引用您的模型。您考虑过吗 你可以这样做:Ruby on rails 在Rails中,如何安排任务来检查一些数据库值和发送提醒电子邮件?,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我需要我的系统每天计算一个会员的会员资格是否即将到期,并向他们发送电子邮件。我该怎么做 例如,如果我使用发条宝石,如何做到这一点?我不太清楚。我们如何通过时钟系统访问模型?我们如何将其用于Rails?我认为ReadMe告诉我们如何在纯Ruby中使用它。请帮忙。我是新来的。如何确保计划程序正在运行?尝试使用 它允许您执行rake任务。您可以从rake任务中引用您的模型。您考虑过吗 你可以这样做: # app/workers/membership_worker.rb class Membership
# app/workers/membership_worker.rb
class MembershipWorker
include Sidekiq::Worker
def perform(account_id)
account = Account.find(account_id)
message = "You have #{account.days_remaining}"
# send reminder email
# MembershipWorker.perform_in(1.day, account.id)
end
end
# app/models/membership.rb
after_create ->{ MembershipWorker.perform_in(10.days, self.id) }
只要在配置文件中包含Rails环境,就可以使用
clockwork
例如,您可以在Rails应用程序config/clock.rb
require_relative 'boot'
require_relative 'environment'
require 'clockwork'
module Clockwork
every(1.day, 'deliver-email', at: '00:00') {
YourMailer.email(...).deliver
}
end
和中提到了这一点
或者,您可以使用
我一直都在使用这两种方法,但现在我更喜欢
发条方法。请记住,clockwork
从进程启动时开始计数。因此,如果您重新启动进程10次,电子邮件可能会发送10次。确保检查电子邮件未发送多次(通常的做法是保留传递日志)。它可用于计划任务吗?可用于cron类型的计划任务。