除错spork和redis-rb:在重启之前,尝试在子进程中使用连接时出现了错误。你需要在fork后重新连接到Redis
请问有什么问题?
当将redis-rb gems从2.2升级到3.0.1时,使用sporkt运行spec会出现以下错误。
在未重新连接的情况下,试图使用子进程的连接。在分叉之后,你需要重新连接到 Redis。
Causes
在redis-rb 3及之后的版本中,据说在进行fork操作时,父进程和子进程之间共享 redis 连接会抛出异常。
参考链接:https://github.com/redis/redis-rb/blob/master/lib/redis/client.rb#L277
处理
在Spork.each_run内写入以下代码,以便在spork进行fork时重新建立连接。
Spork.each_run do
# This code will be run each time you run your specs.
load Rails.root.join('config/initializers/redis.rb')
end
$redis = Redis.new(:host => 'localhost', :port => 6379)
$redis.ping
$redis.ping是在检查Redis连接后启动Rails服务器的黑客技巧。
独角兽也一样,
-
- before_forkで$redis.quit
after_forkでRedisコネクションを作成
需要进行这样的处理。