tukuyo's blog

へっぽこまん

スポンサーリンク

【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`の使い方! - おぴよの気まぐれ日記

gem whenever を使って Rails で定時処理を作る

スポンサーリンク