【问题标题】:Whenever + Mailer not are working together每当 + Mailer 不一起工作时
【发布时间】:2025-12-18 00:05:01
【问题描述】:

我需要每周发送一些电子邮件。 我安装了邮件程序并进行了几次测试。工作正常。

但我不能使用任何时候自动发送电子邮件。 各种论坛都搜了,还是不能解决。

模特/HrCurriculumIntern

def self.send_reply_interns
  @users = HrCurriculumIntern.where(:answer_sent => t('labels.n'))
  InternMailer.send_reply_interns(@users).deliver
end

邮递员/实习生邮递员

default :from => "username.mailer@gmail.com"

def send_reply_interns(users)
  @users = users   
  mail(:to => "<lorenadgb@gmail.com>", :subject => t('subjects.send_reply_interns'), :from => "username.mailer@gmail.com")
end

配置/schedule.rb

set :environment, :development

every 2.minutes do
 runner "HrCurriculumInterns.send_reply_interns"
end

我按照以下步骤操作: Eu segui estes passos:

无论何时。

无论何时

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 /var/www/form/3216/email/trunk && script/rails runner -e development '\''HrCurriculumInterns.send_reply_interns'\'''

## [message] Above is your schedule file converted to cron syntax; your crontab file was not updated.
## [message] Run `whenever --help' for more options.

无论何时--update-crontab

 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 /var/www/form/3216/email/trunk && script/rails runner -e development '\''HrCurriculumInterns.send_reply_interns'\'''

 ## [message] Above is your schedule file converted to cron syntax; your crontab file was not updated.
 ## [message] Run `whenever --help' for more options.

我看不到问题,请问有什么建议吗?

【问题讨论】:

  • 在您的项目文件夹中,运行 tail -f log/* 。这将显示所有包含 cron 的日志。密切关注 cron 是否正在运行。保留一些记录器以进行验证。调试它。

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2 whenever


【解决方案1】:

使用快捷键“whenever -w”来编写 crontab。看起来您使用的是“whenever -update-crontab”而不是“whenever --update-crontab”。因此,您的两个命令实际上都没有编写 crontab 文件。响应应该是

[write] crontab file updated

之后使用“crontab -l”来验证是否写入了正确的 cron。

【讨论】:

    【解决方案2】:

    我找到了解决办法。

    我的代码错误。我做了一些改动:

    Mailer/intern_mailer.rb

    def send_reply_interns
      @users = HrCurriculumIntern.where(:answer_sent => t('labels.n'))  
      mail(:to => "<lorenadgb@gmail.com>", :subject => t('subjects.send_reply_interns'), :from => "username.mailer@gmail.com")
    end
    

    模型/hr_curriculum_intern.rb

    def self.send_reply_interns
      InternMailer.send_reply_interns.deliver
    end
    

    schedule.rb

    set :environment, :development
    
    every 2.minutes do
      runner "HrCurriculumIntern.send_reply_interns"
    end
    

    它的作品现在\ o /

    感谢回复

    【讨论】: