首页 > 解决方案 > 在Rails 6中当时间等于某个值时执行一个函数

问题描述

我正在建立一个在线电子商务商店,并且我正在尝试使用带有动作电缆的导轨将产品从缺货更新为在某个日期时间有货,例如12:00:00 2020-02-19

这个想法是,一旦时间到了,我想推一个 Websocket,该产品现在可用。

我尝试了一些解决方案,例如:

  Thread.new do
    while true do
      if **SOMETIME** == Time.now
        ActionCable.server.broadcast "product_channel",content: "product-in-stock"
      end
    end
  end

这种方法的主要问题是它创建了另一个线程并使 Rails 无响应。此外,如果这个值设置为从现在开始的 1 周,我不希望每个查询端点的用户都创建一个像这样运行的全新线程。

标签: ruby-on-railsrubywebsocketactioncable

解决方案


您有两个选项使用 sidekiq 作业或使用作业 gem https://github.com/mperham/sidekiq/wiki/Scheduled-Jobs 每当允许您设置特定的日期和时间时,请查看文档以获取更多信息 https://github .com/javan/无论何时


推荐阅读