【Rails】【Mechanize】【whenever】Railsでスクレイピングを定期的に実行する
whenever
wheneverとは、簡単にいうと定期的に実行したいものを実行してくれる物。
実際は、cronの設定を簡単な文法でかけるgemらしい…
gemをインストール
Gemfileに以下を追加し、bundle install
gem 'whenever', require: false
設定ファイルを生成
以下のコマンドを入力することで設定ファイルが生成される
bundle exec wheneverize .
以下が生成されたファイル config/schedule.rb
# Use this file to easily define all of your cron jobs. # # It's helpful, but not entirely necessary to understand cron before proceeding. # http://en.wikipedia.org/wiki/Cron # Example: # # set :output, "/path/to/my/cron_log.log" # # every 2.hours do # command "/usr/bin/some_great_command" # runner "MyModel.some_method" # rake "some:great:rake:task" # end # # every 4.days do # runner "AnotherModel.prune_old_records" # end # Learn more: http://github.com/javan/whenever
このファイルに設定を記述していく
every 1.minutes do begin rake "作成したrakeタスク" rescue => e raise e end end
1.minutesの部分はいろいろあって、
wheneverを実行し設定ファイルのエラーを確認
$ bundle exec whenever ## [message] Above is your schedule file converted to cron syntax; your crontab file was not updated. ## [message] Run `whenever --help' for more options.
上記のようなメッセージが出ていれば成功
cronタブに書き込む
以下のコマンドを入力する
bundle exec whenever --update-crontab
他にもオプションがあるらしいので そこは適宜確認を。
伸び代ですねぇ〜
参考
【Ruby on Rails】決まった時間に自動で処理してくれる`whenever`の使い方! - おぴよの気まぐれ日記