【问题标题】:How shall I implement a "cron" like feature in rails?我应该如何在 Rails 中实现类似“cron”的功能?
【发布时间】:2015-07-22 08:14:52
【问题描述】:

我想知道如何在 Rails 中实现类似功能的 cron 作业。

例如,您有一个成员模型。每次有新会员注册时,我的系统都会发送一条短信欢迎消息。但是,如果该用户之前已经打过招呼,则不要再次发送。因此,我想每 10 分钟查看一次成员表,看看我应该将消息发送给谁。

这只是一个示例,我知道否则它更容易实现。但是我想知道是否对于像任务这样的 cron 任务,它必须查看活动记录

1) 我应该把脚本放在哪里? 2)直接通过活动记录访问数据库是一种好习惯吗? 3)我应该像任何时候一样使用宝石吗?还是在这种情况下使用系统 cron 更容易实现?

谢谢!

【问题讨论】:

  • 如何创建一个 rake 任务(即rake greet_new_member)并使用 cron 每 10 分钟运行一次该任务?
  • 我同意 @yihangho 的观点,一个 rake 任务会让你通过常规的 cronjob 快速完成

标签: ruby-on-rails ruby cron


【解决方案1】:

Whenever 是一种围绕系统 cron 的“包装器”工具;没有理由编写自定义批处理来设置 rails 环境和启动任务,就像这项工作一样。 它与 capistrano 和 mina 配合得很好,两者都能够在部署期间更新 crontab。

看看whenever documentation 和mina documentation 有一个更清晰的想法。

干杯!

【讨论】:

    【解决方案2】:

    这称为异步作业。 Resque 和 Sidekiq 是这方面的流行解决方案。

    或者您可以创建一个 rake 任务并随时或直接将其放入 cron。当然,在 rake 任务中使用 ActiveRecord 完全没问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-15
      • 2020-09-07
      • 2011-12-01
      相关资源
      最近更新 更多