我是Rails的新手,所以我不确定这是不是一个愚蠢的问题,但是......
我必须运行常规任务来将数据填充到我的Rails应用程序中。今天我使用nevergem创建Cron条目以在我的系统上运行这些任务。我想将我的Rails应用程序迁移到Docker,以便我可以更轻松地扩展它。我知道在Drupal(PHP)中有穷人的Cron,它使用请求来驱动时间表。
有没有办法在不使用Cron的情况下在Rails中实现调度,或者有更好的方法来管理适用于Rails的常规任务?
答案 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 install
,rails generate arask:install
和rails 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
如果服务器正在运行,任务将自动运行。