RailsのActiveJob内から*_urlヘルパーを呼ぶ方法です。
どんなときに使う?
Jobから何かしらのAPIにアクセスして、そのパラメータにcallbackアドレスを設定する場合など
やり方
- url_helpersをinclude
- default_url_optionsをoverride(これをしないとhost名がわからないよって怒られる)
- お好みでBaseJobを作ってそれを継承する形でHogeJobを作成する
app/jobs/base_job.rb
class BaseJob < ActiveJob::Base
include Rails.application.routes.url_helpers
protected
def default_url_options
{ host: ENV['HOST_NAME'] }
end
end
app/jobs/hoge_job.rb
class HogeJob < BaseJob
queue_as :default
def perform(*args)
# something
# foobar_urlが呼べる
end
end