Search code examples
redisresque

Resque to connect to Redis with AUTH


Need some help connecting Resque Web UI (Rack config.ru) to a Redis server with AUTH

Using Resque + Unicorn + Nginx and installed most using apt-get install (Debian) and gem install

So basically Unicorn loads up resque-web (via Rack) using the standard config.ru

http://etagwerker.wordpress.com/2011/06/27/how-to-setup-resque-web-with-nginx-and-unicorn/

#!/usr/bin/env ruby

# Put this in /var/www/resque-web/config.ru

require 'logger'

$LOAD_PATH.unshift ::File.expand_path(::File.dirname(__FILE__) + '/lib')
require 'resque/server'

Resque::Server.use Rack::Auth::Basic do |username, password|
    password == '{{password}}' # password
end

# Set the RESQUE_CONFIG env variable if you’ve a `resque.rb` or similar
# config file you want loaded on boot.
if ENV['RESQUECONFIG'] && ::File.exists?(::File.expand_path(ENV['RESQUE_CONFIG']))
    load ::File.expand_path(ENV['RESQUE_CONFIG'])
end

use Rack::ShowExceptions
run Resque::Server.new  

I'm trying to find out how to connect this to a Redis server with AUTH per the documentation here: http://redis.io/topics/security (basically in /etc/redis/redis.conf)

This rack configuration seem to only connection to a "vanilla" Redis server using defaults (localhost with standard 6379 port) -- how do I specify the Redis connection so I can pass the user/pass in the format below

redis://user:PASSWORD@redis-server:6379

I've tried using ENV['RESQUE_CONFIG'] to load up a resque.rb file

require 'resque'

Resque.redis = Redis.new(:password => '{{password}}')

this gets pulled via /etc/unicorn/resque-web.conf

# Put this in /etc/unicorn/resque-web.conf

RAILS_ROOT=/var/www/resque-web
RAILS_ENV=production
RESQUE_CONFIG=/var/www/resque-web/config/resque.rb

but it's still not really working


BTW, everything works without the Redis AUTH and just using the "vanilla" localhost Redis connection


Solution

  • Try this

    redis_client = Redis.new(:url => "redis://user:PASSWORD@redis-server:6379")
    

    and then do this

    Resque.redis = redis_client
    

    Hope this help