Rails 5没有Cron的常规任务

时间:2017-02-02 15:09:51

标签: ruby-on-rails docker cron

我是Rails的新手,所以我不确定这是不是一个愚蠢的问题,但是......

我必须运行常规任务来将数据填充到我的Rails应用程序中。今天我使用nevergem创建Cron条目以在我的系统上运行这些任务。我想将我的Rails应用程序迁移到Docker,以便我可以更轻松地扩展它。我知道在Drupal(PHP)中有穷人的Cron,它使用请求来驱动时间表。

有没有办法在不使用Cron的情况下在Rails中实现调度,或者有更好的方法来管理适用于Rails的常规任务?

2 个答案:

答案 0 :(得分:1)

  

有没有办法在不使用Cron的情况下在Rails中实现调度   或者更好的方法来管理与Rails配合良好的常规任务?

Cron几乎是用于在* nix系统上运行预定活动的工具,大多数宝石实际上都在利用cron,事实上,除非你想使用第三方服务,否则避免使用cron可能需要更多工作。 / p>

Rails 5的一个新功能是ActiveJob

  

Active Job是一个框架,用于声明作业并使其运行   各种排队后端。这些工作可以是一切   定期清理,计费,邮寄。   任何可以切成小工作单元并运行的东西   平行,真的。

它可以与几个后端一起使用:

答案 1 :(得分:0)

是的,我创建https://github.com/Ebbe/arask以保持简单。

无需安装任何东西(宝石除外)或在轨道外设置任何东西。没有后台流程,除了实际工作。

gem 'arask'添加到您的Gemfile,运行bundle installrails generate arask:installrails db:migrate

现在,您可以在文件config / initializers / arask.rb中设置任务:

arask.create script: 'puts "IM ALIVE!"', interval: :daily
arask.create task: 'my:awesome_task', interval: :hourly
arask.create task: 'my:other_awesome_task', interval: 2.hours

如果服务器正在运行,任务将自动运行。