Для СУХИХ целей я двигаюсь некоторую логику в отдельный метод:
def fav_tweet(tweet)
puts tweet.text
rClient.fav tweet
end
Один из вариантов, чтобы сделать отдельный поток, а затем вызвать sleep
там. Это не остановит выполнение в вашем основном потоке, поэтому ваш бот может продолжить мониторинг ввода.
Так я определю другой метод:
def in_delayed_thread(num_seconds)
Thread.new { sleep num_seconds; yield }
end
Затем измените существующий код следующим образом:
TweetDelayInSeconds = 30 # seems like this could be a constant
if tweet.is_a?(Twitter::Tweet)
in_delayed_thread(TweetDelayInSeconds) { fav_tweet(tweet) }
end
Существует и другие подходы к планированию задачи. Но я думаю, что это, вероятно, ближе всего к «простому хаку», который вы просите. Например, вы можете запланировать одноразовую задачу с Bash - см. https://askubuntu.com/questions/339298/conveniently-schedule-a-command-to-run-later, но это, вероятно, будет включать в себя некоторые рефакторинги вашего кода, чтобы позволить быть вызванным таким образом.
Отлично! Это супер полезно! **Благодаря!** – mcarvajal