TL; DR:我的每当宝石计划任务不会自动运行但会手动运行。
我在本周早些时候发布了这个,但没有回复,我正在尝试将Whenever gem实现到我的RoR 5应用程序中。一年一次,我希望它在我的“用户”模型中运行一个方法,但出于测试目的,我每分钟都进行一次,如下所示:
Schedule.rb:
set :output, "/home/ubuntu/workspace/log/cron.log"
set :environment, 'development'
every 1.minute do
runner "User.(methodhere)"
end
User.rb:
def self.(methodhere)
User.all.each do |user|
user.update(remaining_days: user.total_days)
end
end
在多个地方,我读过有时cronjobs在开发模式下无法正常运行,所以我跳过了所有的环节,让我的应用程序进入生产模式,这没有帮助。
然后我发现您可以在命令行中手动运行这些作业,然后我尝试使用找到的命令执行:
whenever --update-cron
然后
crontab -l
显示
# Begin Whenever generated tasks for:
* * * * * /bin/bash -l -c 'cd /home/ubuntu/workspace && bundle exec
bin/rails runner -e development '\''User.new.(methodhere)'\'' >>
/home/ubuntu/workspace/log/cron.log 2>&1'
手动运行:
/bin/bash -l -c 'cd /home/ubuntu/workspace && bundle exec
bin/rails runner -e development '\''User.(methodhere)'\'' >>
/home/ubuntu/workspace/log/cron.log 2>&1'
使其工作,并执行(methodhere)。只要不让它以设定的间隔自动运行。
我发现的另一件事是尝试重新启动cron,通过cron restart,但我收到了:
cron: can't open or create /var/run/crond.pid: Permission denied
我不确定这与我正在使用的IDE有什么关系,Cloud 9。
许多谷歌搜索都没有给我留下任何东西。
注意:我是RoR的新开发者,因此非常感谢任何有关此事的指导,谢谢!