Delayed Job とは何か
BackgrounDRb 的な何かです。詳しくはググれば、英語のチュートリアル的なものがいろいろ見つけられると思います。
コンストラクタで複雑なことをしているとエラーになる
class CrawlJob def initialize @agent = WWW::Mechanize.new end def perform ... end end
を lib/crawl_job.rb として保存し、コントローラなどから
Delayed::Job.enqueue CrawlJob.new
すると、can't dump anonymous class Class (TypeError) というエラーが発生します。
理由は Delayed Job 内部で enqueue されたオブジェクトの YAML 化を行っているのですが、上の例の Mechanize オブジェクト生成のような複雑なことをコンストラクタで行っていると駄目なようです。
なので、
class CrawlJob def perform @agent = WWW::Mechanize.new ... end end
などとします。
yaml ライブラリをもう少し詳しく調べれば深い理解が得られると思いますが、とりあえずコンストラクタでは複雑なことをせずに perform メソッドなどでいろいろ書いていけば良いと思います。