HippoBlog
Web開発に関する備忘録や
日々の雑記ブログ
  • #Ruby on Rails
  • 2020年2月28日
ENTRY TITLE

[rails] Delayed Jobで非同期処理

TEXT BY @hippohack@hippohack
TEXT BY @hippohack@hippohack
  • このエントリーをはてなブックマークに追加

個人開発WebアプリのHippoMarksでのキャプチャ画像を取得する処理を非同期で処理すべく、Delayed Jobを使ってみる。

準備

Gemfile

gem 'daemons'
gem 'delayed_job_active_record'

bash

# gem install
bundle install

# make necesarry files
rails g delayed_job:active_record

# make tables
rails db:migrate

有効化

config/application.rb

module Bookmarks
    class Application < Rails::Application
        config.active_job.queue_adapter = :delayed_job
        ︙
    end
end

jobの作成

$ rails g job Capture
Running via Spring preloader in process 2177
      invoke  rspec
      create    spec/jobs/capture_job_spec.rb
      create  app/jobs/capture_job.rb

作成されたJobの編集

app/job/capture_job.rb

class CaptureJob < ApplicationJob
  queue_as :default


  def perform(*args)
    # Do something later
  end
end
  • 実処理をあらわすのは performメソッドの役割
  • メソッド配下に非同期処理を書く
  • メソッド内で必要な値は引数で渡す

実行

ここでは書いてないですが、/config/initializers/delayed_job.rb を作成して設定を変更することが可能。

詳しくはこのへん参考に。

bash

# ruby bin/delayed_job start

最後までお読みいただき、ありがとうございました。

ご意見などありましたら@hippohackへDMをお願いいたします。

  • このエントリーをはてなブックマークに追加