【Rails】Active JobとWheneverでスクレイピングを自動化(#3 Wheneverの使い方)

投稿日:

プログラミング初心者の勉強ブログ #68

RailsのActive Jobとwheneverを使って、スクレイピングを自動化させてみようと思います。今回はWheneverでcrontabを設定し、Active Jobで設定したジョブの自動化させる仕組みを実装していきます。

 

目次

 

前回までの内容

前回までで、Delayed Jobを使ったActive Jobの設定を行い、Jobのコーディングまで行いました。

 

【Active Jobの設定手順について】

 

【Active Jobの仕組みと処理の流れについて】

 

今回は設定したJobを、Rubyのgemである”Whenever”を利用して自動化したいと思います。

 

Wheneverの使い方

”Whenever”はRubyのGemの一つであり、crontabの設定を行うに際し、便利なライブラリです。

自動処理を行うために必要なのが「cron(クーロン)」であり、これを利用するためにcrontabの設定を行う必要があります。

 

cronとは

cronとは、UNIX系のOS(Linuxとか)に入っているプログラムのひとつであり、事前に「いついつになったら、このプログラムを動かしてね」と指示を出しておくと、その時間になったときに指定しておいたプログラムを動かしてくれるやつです。

cronとは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

 

ここに書いてある通りです。今回は開発環境での実装手順になりますので、自分の使っているOSの中にあるcronを使います。

ちなみにcronは「OS」の中に入っているものであり、開発環境でcronが起動するためには「自分が使用するパソコンの電源」が必ずオンになってなければなりません。サーバーは立ち上がってなくても大丈夫ですが、必ず電源が入ってないと動きませんので注意する必要があります。

 

Wheneverの実装手順

gemのインストールから書いていきます。(使用環境はRails 5.1.1、postgresqlです。)

自動化するJobの内容は、「朝の情報番組の占い結果を公式サイトからスクレイピングし、毎朝データベースに保存する。」というものです。

※Wheneverは本番環境でHerokuを使う場合には対応してないそうです。Herokuの場合はHeroku Schedulerを使うようにとのことです。

 

gem ”Whenever”のインストール

Gemfile

忘れないうちにターミナルで「$ bundle install」。

「require: false」は、なぜつけるかわかりませんでしたが、WheneverのGitHubのREADMEに書いてあるので付けました。

GitHub Whenever

 

schedule.rbの作成

インストールしたら、

 

コマンドを実行すると「config/shedule.rb」が作成されます。この「shedule.rb」に書いた内容が、cronに自動実行してもらえます。

 

schedule.rbの編集

config/shedule.rb

 

あらかじめActive Jobで作成していたスクレイピング処理を行う「FortuneScrapingJob」を「平日の朝8時」に毎回実行する設定です。

 

アプリファイルの直下にある「log」ディレクトリ内に「〇〇.log」の形で専用のログファイルを作成しております。

 

保存先のデータベースを開発環境用に指定してます。

 

「runner」に実行したいプログラムを入れます。見本では入れ込むプログラムに「モデルとそのメソッド」が書いてあり、他の方の記事を見ても基本的に「Model」が書かれていましたが、上記の様にActive Jobで設定したJobを入れても起動しました。

その他のタイマー設定の方法もGitHub Wheneverに色々書かれてます。

 

※Active Jobを使った「FortuneScrapingJob」の設定は、

【Rails】Active JobとWheneverでスクレイピングを自動化(#2 Active Jobの設定方法)

こっちに載せてます。

 

schedule.rbの設定をcronに反映させる

ターミナルで以下のコマンドを入力します。そうすることでcronに反映されます。スマホでアラーム設定する感じです。

 

「[write] crontab file updated」とターミナルに出てきたら大丈夫です。実際に翌朝8時に確認したら、占い結果がしっかりデータベースに保存されてました。

 

設定したcrontabの確認

cronは本来Linuxコマンドで設定することができるものです。crontabコマンドなるものが色々存在し、こちらを使用することでWheneverで設定したcrontabについても確認することができます。

crontabコマンドについてまとめました【Linuxコマンド集】

 

READMEでは「$ crontab -l」コマンドが書かれていましたが、他にもいろいろ載ってる記事をリンクしておきます。

 

まとめ

今回で自動スクレイピングのプログラムが完了しました。Wheneverを使用すればTwitterのbotも作成できます。本番環境でちゃんと動くようにするには、プラスで設定が何個かあるっぽいので不安ですが、そのときはまた記事にまとめます。

以上ありがとうございました。

-プログラミング学習
-, ,

Copyright© s u p ? , 2019 All Rights Reserved.