世界が幸せで在ります様に

ITエンジニアになりたい人・エンジニアの人にとって役立ちそうな商品を紹介するブログ

最速でActiveJob/resque/resque-schedulerの使い方・初心者編

最速でActiveJob/resque/resque-schedulerの使い方を紹介

環境

  • Rails4.2以降
  • Ruby2.2以降

用語

  • $ コンソールで叩くコマンド
  • => rails consoleで叩くコード

準備

$ brew install redis
# Gemfile
gem 'resque'
gem 'resque-scheduler'

各サーバ、タスク起動

# redisの立ち上げ
$ redis-server

# resqueの立ち上げ
$ TERM_CHILD=1 QUEUES=* bundle exec rake environment resque:work

# resque-schedulerの立ち上げ
$ bundle exec rake resque:scheduler

jobの作成

# app/jobs/application_job.rb
class ApplicationJob < ActiveJob::Base; end

# app/jobs/example_job.rb
class ExampleJob < ApplicationJob
  self.queue_adapter = :resque

  queue_as :default

  def perform(*args)
    puts args
  end
end

実行

$ rails console
=> ExampleJob.perform_now 'hoge1'
# 即時hoge1が出力

=> ExampleJob.perform_later 'hoge2'
# resqueのログへhoge2が出力される

=> ExampleJob.set(wait: 10.second).perform_later 'hoge3'
# 1. 10秒後、resque-schedulerのログへ以下出力
# resque-scheduler: [INFO] 2018-10-10T13:00:11+09:00: Processing Delayed Items
# 2. resqueのログへhoge3が出力

プロフィールと免責事項