【发布时间】:2015-03-22 13:49:51
【问题描述】:
我正在尝试使用 whenever gem 在我的应用程序中运行 cron 作业。我想每两分钟重新计算一次我的模型“用户”的属性“值”。以下是我采取的步骤:
宝石文件
gem 'whenever', :require => false
终端
$ bundle install
$ wheneverize .
schedule.rb
every 2.minutes do
runner "User.recalculate"
end
models/user.rb
def self.recalculate
User.all.each {|user| user.recalculate_value }
end
private
def recalculate_value
self.value = self.value + 1
self.save!
end
终端
$ whenever --update-crontab
和 '$when -l' 返回:
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/website && bin/rails runner -e development '\''User:recalculate'\'''
但到目前为止,我的User.values 没有任何变化。在我的控制台中运行User.recalculate 可以正常工作,因此错误显然出现在任何时候。我错过了什么?
【问题讨论】:
-
您能否提供任何日志或输出以使问题更清楚?
-
@StanislavMekhonoshin 日志或从哪里输出?
-
当您通过 crontab 运行时,它会将消息写入 syslog。您也可以尝试在 Rails 控制台中运行 User.recalculate,只是为了检查代码是否正常运行,这是任何时候出现的问题。
-
@StanislavMekhonoshin 好的,我知道我错过了一些东西。什么是系统日志/我在哪里可以找到它? User.recalculate 有效,因此无论何时都存在问题。
-
你有什么操作系统?我的意思是你什么时候在什么环境下运行?你具体是怎么运行的?
标签: ruby-on-rails ruby cron crontab whenever