【问题标题】:Rails whenever gem not working每当 gem 不工作时 Rails
【发布时间】:2014-09-06 06:06:24
【问题描述】:
我是 Rails 中的 cron 工作的新手,我想使用 'whenever' gem 来完成它。这是我迄今为止尝试过的。
宝石文件
gem 'whenever'
Mailer.rb
def new_test
Rails.logger.debug '===========whenever is working================'
end
Schedule.rb
every 1.minutes do
runner 'Mailers.new_test'
end
但这并没有做任何事情。我哪里出错了?
【问题讨论】:
标签:
ruby-on-rails
cron
whenever
【解决方案1】:
whenever 实际上不会自动为您运行该作业。这只是您在系统上创建相应 cronjob 的一种简单方法。您需要在您的项目上运行以下命令来更新您的 crontab
whenever -i
问候
【解决方案2】:
您的代码中似乎有两个错误:
在您的 scheduler.rb 中,您没有正确调用 mailer。如果Mailer 是一个简单的模型,你写Mailers.new_test 它应该是Mailer.new_test。如果它是邮件程序,即。从类ActionMailer 覆盖,那么它应该是Mailer.new_test.deliver。
如果Mailer 是简单模型,那么文件应该是:
Mailer.rb
new_test 应该是像Mailer.new_test 这样调用的类方法,而不是实例方法
def self.new_test # Should be a class method not instance
Rails.logger.debug '===========whenever is working================'
end
Schedule.rb
every 1.minutes do
runner 'Mailer.new_test'
end
如果 mailer 是 action mailer 的实例,那么:
Mailer.rb
def new_test
Rails.logger.debug '===========whenever is working================'
end
Schedule.rb
every 1.minutes do
runner 'Mailer.new_test.deliver'
end