1. ジェムを追加する
お馴染みの Gemfile で。
resque 本体と resque-scheduler をインストールする。
rails_project/Gemfile
gem 'resque'
gem 'resque-scheduler'
$ bundle install
2. 処理内容をモデルに書く
最終的にワーカーに実行させたい処理を、モデルの perform メソッドの中に書く。
ここではテストとして、標準出力だけをする処理を作る。
rails_project/app/models/example.rb
class Example
@queue = :default
def self.perform
p 'Hello Sword!'
end
end
3. ワーカー用の設定を追加する
Rakefile に2行足すだけで良い。
rails_project/Rakefile
require 'resque/tasks'
require 'resque/scheduler/tasks'
4. resque 本体のワーカーを立ち上げる
まずは resque 本体のワーカーを起動する。
( resque-scheduler のものではない )
$ TERM_CHILD=1 QUEUES=* bundle exec rake environment resque:work
次のような状態になる。
これはいったん放っておいて次に進む。
5. resque-scheduler のワーカーを立ち上げる
resque 本体のワーカーとは別に立ち上げる必要がある。なので別ウィンドウで実行すること
$ bundle exec rake resque:scheduler
次のような状態になる。
6. ジョブを登録する
さらに、二つのワーカーとは別ウィンドウでジョブを追加してみよう。
つまり、ウィンドウを3つ使うことになる。
Rails のコンソールを使うのが手軽だ。
$ bundle exec rails console
irb(main)> Resque.enqueue_in(5.second, Example)
=> true
ちなみに、これは「今から5秒後にジョブを登録する」という意味だ。
6. ジョブが実行される
しばらく経ってから、手順1で立ち上げた、 resque 本体のワーカーを見てみよう。
**「文字列を標準出力する」**というジョブが実行されているのが分かるだろう。
おめでとう!
環境
- resque-scheduler (4.0.0)
- resque (1.25.2)
- Rails 4.2.4
チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。
メンター受付