Redis のインストール
https://github.com/defunkt/resque を参照。
git clone git://github.com/defunkt/resque.git cd resque rake redis:install dtach:install rake redis:start gem install bundler bundle install
モニタリング用管理Webアプリ
resqueのgitレポジトリの中の管理アプリケーションを起動する。
cd resque/examples/demo rackup config.ru
ブラウザで
http://localhost:9292/
のようにアクセスすることでアプリケーションが実行できる。
rails 3 で resque を使う
Gemfile を編集する。
vi Gemfile
以下の一行を追加。
gem 'resque'
Bundlerでインストール。
bundle install
config/initializers/resque.rb を作成し、以下を記述。
require 'resque' Resque.redis = 'localhost:6379'
app/controllers/queue_controller.rb を作成し、以下を記述。
class QueueController < ApplicationController def resque_push Resque.enqueue(Echo, params[:data]) render :text => params[:data] end def resque_pop data = Resque.reserve(:default) end end
app/workers/echo.rb を作成し、以下を記述。
class Echo @queue = :default def self.perform(text) sleep 3 path = File.expand_path("log/echo.log", Rails.root) File.open(path, 'a') do |f| f.puts "Hello #{text}!" end end end
lib/tasks/resque.rake を作成し、以下を記述。
require 'resque/tasks'
空のログファイルを作成。
touch log/echo.log
Railsサーバを起動。
rails server
http://localhost:3000/queue/resque_push?data=test
と呼び出すと、dataの値がキューに保存される。
また、
http://localhost:3000/queue/resque_pop
を呼び出すことで、キューからデータを取得する。
以下のようなコマンドでワーカーを起動すると、キューのジョブを処理する(今回の場合、log/echo.log にキューの内容が記録される)。
QUEUE=default rake environment resque:work
参考URL
https://github.com/defunkt/resque
http://w.koshigoe.jp/study/?%5BBackgroundJob%5D%5BRuby%5D+Resque+%A4%CE+README+%A4%E8%A4%EA
http://www.oiax.jp/rails/zakkan/resque.html