質問: 特定ページをスクレイピングして処理→表示するWEBアプリを作る際、サーバーのRubyプログラムでスクレイピングを定期実行する方法について、いくつか方法が考えられるのですが、 たとえば10分おきにスクレイピングするとして、どの方法が一番良いのか、メリット・デメリットなどあるのでしょうか? 1.loop doにsleepを入れる ``` Thread.start do loop do #スクレイピング、処理 sleep(600) end end ``` 2.gem clockworkなどのスケジューラを利用する 参考:clockworkでRubyスクリプトを定期実行しよう 3.(herokuの場合)heroku Schedulerを使う 参考:heroku schedulerの使い方(Rails,sinatra) -- 初歩的な質問で申し訳ないのですが、よろしくお願いします。
回答: 実現手段は色々あり、何の制約・制限もないのであれば、自身で実装しやすいと思う方法が良いと思います。 ここに提示されていない、何らかの制約や制限があった場合に、それを踏まえて、実装方法を合わせれば良いと思います。 Herokuのようなサービスの場合、プロセスの起動している時間に対して課金されたりするので、その場合には、1を選択することは愚かな選択となります。 同様に2よりもHeroku自体が提供しているスケジューラの方が(プロセス起動時間が最小で済む)ちょっとでも得になると想定されるので、その点でのみみるのであれば、3を選択することが良いと思われます。