【发布时间】:2011-12-01 06:06:15
【问题描述】:
我正在尝试编写一个尝试使用默认 TCP 设置连接到 Redis 的函数,如果失败,则尝试通过 unix 套接字连接到 Redis。我的目的是让一个连接脚本适用于我的所有系统,其中一些使用 TCP,而另一些使用套接字。
但是,我似乎无法从失败的 TCP 连接中解救出来。这是我的测试脚本。
require "redis"
def r
begin
$redis ||= Redis.new
rescue
$redis = Redis.new(:path => "/tmp/redis.sock")
end
end
puts "You have #{r.keys.count} redis keys"
rescue 块永远不会被执行,而是引发异常。这是此脚本的输出。
我已验证 Redis.new(:path => "/tmp/redis.sock") 可以按预期工作。我试图通过使用rescue Errno::ECONNREFUSED 来更具体地使用我的救援块,但无济于事。我不知道为什么我不能捕捉到这个异常。
有什么想法吗?
【问题讨论】: