Gem 关于 Whenever 这个 gem

zanecat · 2015年04月22日 · 最后由 Fighting_3 回复于 2017年08月29日 · 3121 次阅读

我在 Weather 这个 model 里面写了一个方法

class Weather < ActiveRecord::Base
    def task
        e = Extractor.new
        e.savaData
    end
end

然后在生成的 schedule.rb 里面写

every 6.seconds do
  runner "Weather.task"
end

是否可以运行呢?我试了一下没有效果,请问问题出在哪里

runner 后面写的是不是 类名。方法?

要放到 crontab 里面才能定时执行

whenever --update-crontab

#2 楼 @huacnlee 不懂。。。就是说我这个东西别人拿过去也要在终端里面打这个代码吗?

#4 楼 @huacnlee 还是没有效果

Begin Whenever generated tasks for: /Users/Zane/prog/project2/config/schedule.rb

  • * * * * /bin/bash -l -c 'cd /Users/Zane/prog/project2 && bin/rails runner -e production '\''Weather.task'\'''

End Whenever generated tasks for: /Users/Zane/prog/project2/config/schedule.rb

登上部署的服务器,切换到运行这个应用的用户,然后运行whenever -wwhenever的命令行其实还算清楚,当然,最好还是搭配 capistrano 使用。

#6 楼 @Grant 老师的要求是用 whenever,我看一下你这个,谢谢哈

#7 楼 @ericguo ——||| 尴尬,听不懂了哈,刚学没几天

#9 楼 @zanecat 仔细看一下文档就知道了,我说的就是问题出的地方,可能过于干涩了点。。

总的来说就是 wheneve 依赖于 cron 服务,所以你需要在 server 端确保 cron 服务可用且有权限(虽然 Ubuntu 默认都是有这个权限的)。

你的 task 不是类方法吧?应该是

def self.task 
xxx
end

学 crontab 别提问了,搞明白那个你就都懂了

我在 schedule.rb 文件里指定了输出目录,set :output, "/home/111.txt";然后在这个目录里每个周期出现 sh: bundle: command not found,任务并没有执行,是咋回事啊?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号