宝石不工作时的滑轨

时间:2014-09-06 06:06:24

标签: ruby-on-rails cron whenever

我是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

但这没有做任何事情。我哪里错了?

2 个答案:

答案 0 :(得分:6)

whenever实际上并不会自动为您运行该作业。这只是一种简单的方法,您可以在您的系统上创建相应的cronjob。您需要在项目上运行以下命令来更新crontab

whenever -i

此致

答案 1 :(得分:0)

您的代码中似乎有两个错误:

在scheduler.rb中

您没有正确地调用邮件程序。如果Mailers.new_test是一个简单的模型,那么您应该Mailer.new_testMailer。如果它是邮件,即。从类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