【rails】delayed_job
・概要
簡単に重い処理を非同期に設定してくれる
collectiveのリポジトリのほうが開発がお盛んとのこと
・目的
ActiveMailerのmail()で返ってくるMessageインスタンスのdeliverメソッドがうんこみたいに遅いのでそれを非同期にしたい
・使い方
Gemfileにdelayed_job_active_recordを追加
rails g migration delayed_job:active_record
rake db:migrate
Hoge.method
ならHoge.delay.methodにするだけでおk
Hoge.fuga.deliverは
Hoge.delay.fuga
ここだけ特殊.
delayが勝手にdeliverもやってくれるらしい
・数々のエラー
とりあえずdelayを指定したメソッド内で自作moduleのメソッドを読んだらエラーがでる.
application.rbに自作moduleのパスは通しているのに?
エラー内容について普通に考える(最初に考えろ)
ようはdelayメソッド内ではutil_moduleが通っていないのが原因っていう単純なや〜つだろってことで、う〜ん,まあ違う方法でパスとおしゃいいんしょ。
掲示板とか公式ドキュメントを読むと,
config/initializers/custom.rbにincludeなりrequireなり書けばWorkerは認識しますとのこと
それに従うことでエラーは消えた
custom.rbにはutil_module.rbが通っているので単純に
include MyModule
だけでおk
・deliverが恐ろしく遅いのでこれ自体をもうデフォルトで非同期にしたいのだけど,やり方がわからん〜
公式に書かれているhandle_asynchronouslyがうまく動かんし疲れたしってか疲れた
ってことでとりあえずはHoge.delay.hugaMethodの形で使うことにする
日本語でかいちくり〜