是否可以启动resque-web监听redis套接字?

时间:2011-08-10 12:20:24

标签: redis resque

我已禁用redis侦听端口6379并启用了websocket。它从我的应用程序中运行得非常好,但是当我启动resque-web时,它一直在通过网络接口进行监听,并且失败并显示消息:

  

无法连接到Redis! (redis的://127.0.0.1:6379/0)

有人知道是否有可能使resque-web使用套接字而不是网络?

提前致谢

2 个答案:

答案 0 :(得分:2)

我一直在阅读resque-web的代码,我意识到它在内部加载你提供的任何路径作为命令的参数。所以我创建了一个普通的ruby脚本,用redis gem连接到Redis,然后将这个实例分配给Resque.redis:

刚刚创建了一个名为'resque-web-hack.rb'的文件:

require 'redis'
require 'resque'
$redis = Redis.new(:path => '/tmp/redis.sock')
Resque.redis = $redis

然后像这样使用它:

$ resque-web /path/to/my/file/resque-web-hack.rb

这只是一个黑客,但它现在适用于我......

答案 1 :(得分:1)

我刚刚解决了同样的问题:)所以这是解决方案

在我的./config/resque.yml中我有这一行

development: /tmp/redis.sock

这是我的RAILS_ROOT / config / initializers / resque.rb

rails_root = ENV['RAILS_ROOT'] || File.dirname(__FILE__) + '/../..'
rails_env = ENV['RAILS_ENV'] || 'development'

resque_config = YAML.load_file(rails_root + '/config/resque.yml')
if resque_config[rails_env] =~ /^\// # using unix socket
    Resque.redis = Redis.new(:path => resque_config[rails_env])
else 
   Resque.redis = resque_config[rails_env]
end