2016-10-23 8 views

答えて

0

私は別の方法にいくつかのロジックを移動していDRYの目的のために:

def fav_tweet(tweet) 
    puts tweet.text 
    rClient.fav tweet 
end 

1つのオプションは、別のスレッドを作成し、そこに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を参照してください。しかし、これはあなたのコードをこのようにリファクタリングする必要があります。

+0

素晴らしい!これは超便利です! **ありがとう!** – mcarvajal

関連する問題