Resque Show archive.org snapshot comes with its own dashboard (Resque server) that you can mount inside your Rails 3 application with
#config/routes.rb:
require 'resque/server'
My::Application.routes.draw do
# ...
mount Resque::Server => '/resque'
end
Unfortunately, since this bypasses the filters in your ApplicationController
, everyone can access this dashboard now (unless you have some Rack-based authentication in place, like
Devise
Show archive.org snapshot
).
If you're using clearance, you can easily roll your own simple Rack-based authentication.
Change your routes.rb
to
My::Application.routes.draw do
# ...
mount AuthenticatingResqueServer => '/resque'
end
Put a authenticating_resque_server.rb
into config/initializers
:
require 'resque/server'
class AuthenticatingResqueServer < Resque::Server
class ClearanceAuthentication
def initialize(app)
@app = app
end
def call(env)
@request = ActionDispatch::Request.new(env)
remember_token = @request.cookies["remember_token"]
if skip_authentication? or (remember_token.present? and User.find_by_remember_token(remember_token))
@app.call(env)
else
[ 401, { 'Content-Type' => 'text/plain', 'Content-Length' => '0' }, [] ]
end
end
private
STATIC_ASSET_PATTERN = /\.(css|png|jpg|js)$/
def skip_authentication?
@request.get? and @request.path_info =~ STATIC_ASSET_PATTERN
end
end
use ClearanceAuthentication
end
Rack rules!
Posted by Tobias Kraze to makandra dev (2011-07-24 19:23)