#271 Resque
Jun 20, 2011 | 12 minutes | Plugins, Background Jobs
Resque creates background jobs using Redis. It supports multiple queue and comes with an administration interface for monitoring and managing the queues.
- Download:
- source codeProject Files in Zip (206 KB)
- mp4Full Size H.264 Video (18.8 MB)
- m4vSmaller H.264 Video (12.1 MB)
- webmFull Size VP8 Video (13.8 MB)
- ogvFull Size Theora Video (28 MB)
Resources
bash
brew install redis
redis-server /usr/local/etc/redis.conf
resque-web
rake resque:work QUEUE='*'
brew install redis redis-server /usr/local/etc/redis.conf resque-web rake resque:work QUEUE='*'
Gemfile
gem 'resque', :require => "resque/server"
gem 'resque', :require => "resque/server"
lib/tasks/resque.rake
require "resque/tasks"
task "resque:setup" => :environment
require "resque/tasks" task "resque:setup" => :environment
snippets_controller.rb
Resque.enqueue(SnippetHighlighter, @snippet.id)
Resque.enqueue(SnippetHighlighter, @snippet.id)
app/workers/snippet_highlighter.rb
class SnippetHighlighter
@queue = :snippets_queue
def self.perform(snippet_id)
snippet = Snippet.find(snippet_id)
uri = URI.parse('http://pygments.appspot.com/')
request = Net::HTTP.post_form(uri, {'lang' => snippet.language, 'code' => snippet.plain_code})
snippet.update_attribute(:highlighted_code, request.body)
end
end
class SnippetHighlighter @queue = :snippets_queue def self.perform(snippet_id) snippet = Snippet.find(snippet_id) uri = URI.parse('http://pygments.appspot.com/') request = Net::HTTP.post_form(uri, {'lang' => snippet.language, 'code' => snippet.plain_code}) snippet.update_attribute(:highlighted_code, request.body) end end
config/routes.rb
mount Resque::Server, :at => "/resque"
mount Resque::Server, :at => "/resque"
config/initializers/resque_auth.rb
Resque::Server.use(Rack::Auth::Basic) do |user, password|
password == "secret"
end
Resque::Server.use(Rack::Auth::Basic) do |user, password| password == "secret" end

