LoginSignup
7
5

More than 1 year has passed since last update.

Rails | resque-scheduler を動かす最小手順

Last updated at Posted at 2016-01-27

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

次のような状態になる。

image

これはいったん放っておいて次に進む。

5. resque-scheduler のワーカーを立ち上げる

resque 本体のワーカーとは別に立ち上げる必要がある。なので別ウィンドウで実行すること

$ bundle exec rake resque:scheduler

次のような状態になる。

image

6. ジョブを登録する

さらに、二つのワーカーとは別ウィンドウでジョブを追加してみよう。
つまり、ウィンドウを3つ使うことになる。

Rails のコンソールを使うのが手軽だ。

$ bundle exec rails console

irb(main)> Resque.enqueue_in(5.second, Example)

=> true

ちなみに、これは「今から5秒後にジョブを登録する」という意味だ。

6. ジョブが実行される

しばらく経ってから、手順1で立ち上げた、 resque 本体のワーカーを見てみよう。
**「文字列を標準出力する」**というジョブが実行されているのが分かるだろう。

image

おめでとう!

環境

  • resque-scheduler (4.0.0)
  • resque (1.25.2)
  • Rails 4.2.4

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

メンター受付

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5