【Rails】delayed_jobではまる

Railsで非同期処理を実装する方法としてdelayed_jobやResqueを使う方法などがありますが、今回はdelayed_jobを使って見ました。
モジュールのメソッドでも使えるのはありがたいです。

module Hoge
  def self.test
    #処理
  end
end
Hoge.delay.test

こんな感じに使えます。

testメソッドの内容を更新し、delayed_jobで処理していたのですが、ここで問題が発生しました。
処理の内容が変わりません。。。

なので、delayed_jobの再起動をしましょう。Railsのルートディレクトリに移動して下記実行

script/delayed_job restart

capistranoを使っている場合はこちらのdeploy.rbにもdelayed_jobの再起動を行うコードを追加しましょう。

after "deploy:start", "delayed_job:start"
after "deploy:stop", "delayed_job:stop"
after "deploy:restart", "delayed_job:restart"

namespace :delayed_job do
  desc "Restart the delayed_job process"
  task :restart, :roles => :app do
    run "cd #{current_path}; RAILS_ENV=#{rails_env} script/delayed_job restart"
  end
  task :stop, :roles => :app do
    run "cd #{current_path}; RAILS_ENV=#{rails_env} script/delayed_job stop"
  end
  task :start, :roles => :app do
    run "cd #{current_path}; RAILS_ENV=#{rails_env} script/delayed_job start"
  end
end
Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

週刊Railsウォッチ

インフラ

BigBinary記事より

ActiveSupport探訪シリーズ