我目前有一个正常工作的邮件程序,我想使用everyth gem进行自动化。
app / models / athlete.rb
class Athlete < ApplicationRecord
# Snippet for brevity
def self.factivity_email
@athlete = Athlete.all
@athlete.each do |u|
ActivityMailer.factivity_required(u.email).deliver_now
end
end
end
如果我在Rails控制台中运行Athlete.factivity_email,则我的收件箱中会收到一封电子邮件。因此,我尝试通过每两分钟运行Athlete.factivity_email来测试我的schedule.rb,但我从未收到电子邮件。
config / schedule.rb
# Learn more: http://github.com/javan/whenever
set :environment, :development
every 2.minutes do
runner "Athlete.factivity_email"
end
当我在控制台中运行crontab -l
时,我会看到cron作业
0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58 * * * * /bin/bash -l -c 'cd /home/ueadmin/athletic && bundle exec bin/rails runner -e development '\''Athlete.factivity_email'\'''
如果我在控制台中运行mail
,则会看到每两分钟显示一次:
U 36 Cron Daemon Sat Dec 1 14:48 21/774 Cron <ueadmin@ue-ubuntu> /bin/bash -l -c 'cd /home/ueadmin/athletic && bundle exec bin/rails runner -e production '\''Athlete.factivity_email'\'''
我很困惑,因为factivity_email在rails控制台中按预期方式执行,但是在任何时候自动发送都不会发送。