Rails 3でのdelayed_jobの設定

Rails 3でのdelayed_jobの設定方法。
Rails2の場合
■インストール
ActiveRecordの場合
gem 'delayed_job_active_record'
Mongidの場合
gem 'delayed_job_active_record'

■マイグレーション
$ script/rails generate delayed_job:active_record
$ rake db:migrate

■delayed_jobで非同期に実行
1:.delayでメソッドを実行
.delayをつけることで、その場合のみ非同期に実行される
user.activate!(@device) 
 ↓
user.delay.activate!(@device)

2:handle_asynchronouslyをメソッドに定義
常に非同期に実行される。
class Device
def deliver
# long running method
end
handle_asynchronously :deliver
end
何分後に実行するかなどのオプションも設定できる。
handle_asynchronously :deliver, :run_at => Proc.new { 5.minutes.from_now }

■Capistranoレシピ
config/deploy.rb
require "delayed/recipes"
set :rails_env, "production" #added for delayed
before "deploy:restart", "delayed_job:stop"
after "deploy:restart", "delayed_job:start"
after "deploy:stop", "delayed_job:stop"
after "deploy:start", "delayed_job:start"
posted by digital-squad at 2012年01月05日 16時32分 | Comment(0) | TrackBack(0) | Ruby on Rails / Ruby
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/244451741
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック