Выполнить функцию, когда время равно определенному значению в Rails 6 - PullRequest
0 голосов
/ 12 февраля 2020

Я создаю интернет-магазин электронной коммерции и пытаюсь использовать рельсы с кабелем действий, чтобы обновить товар с отсутствия на складе в определенный момент времени, например 12:00:00 2020-02-19.

Идея состоит в том, что, как только время истечет, я хочу показать sh веб-розетку, что продукт теперь доступен.

Я пробовал несколько решений, таких как:

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

Основная проблема этого подхода заключается в том, что он создает другой поток и делает рельсы неотвечающими. Кроме того, если это значение установлено, скажем, через 1 неделю, я не хочу, чтобы каждый пользователь, который запрашивает конечную точку, создал совершенно новый поток, работающий следующим образом.

1 Ответ

1 голос
/ 13 февраля 2020

У вас есть две опции: использовать задания sidekiq или использовать каждый раз, когда задание gem https://github.com/mperham/sidekiq/wiki/Scheduled-Jobs Всякий раз, когда вы можете задать конкретные c день и время, обратитесь к документации для получения дополнительной информации https://github.com/javan/whenever

...