我已禁用redis侦听端口6379并启用了websocket。它从我的应用程序中运行得非常好,但是当我启动resque-web时,它一直在通过网络接口进行监听,并且失败并显示消息:
无法连接到Redis! (redis的://127.0.0.1:6379/0)
有人知道是否有可能使resque-web使用套接字而不是网络?
提前致谢
答案 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