我是Rails中cron工作的新手,我想用'随时'的宝石来做。这是我到目前为止所尝试过的。
的Gemfile
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
但这没有做任何事情。我哪里错了?
答案 0 :(得分:6)
whenever
实际上并不会自动为您运行该作业。这只是一种简单的方法,您可以在您的系统上创建相应的cronjob。您需要在项目上运行以下命令来更新crontab
whenever -i
此致
答案 1 :(得分:0)
您的代码中似乎有两个错误:
在scheduler.rb中您没有正确地调用邮件程序。如果Mailers.new_test
是一个简单的模型,那么您应该Mailer.new_test
写Mailer
。如果它是邮件,即。从类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.rb
def new_test
Rails.logger.debug '===========whenever is working================'
end
Schedule.rb
every 1.minutes do
runner 'Mailer.new_test.deliver'
end