Ruby Rails アプリケーションのテストを作成しており、Ruby が接続できない場合に Redis サーバーによってスローされたエラーをキャッチするコード ブロックがあります。現在、コードは次のようになっています。
begin
config.before(:all) { Resque.redis.select 1 }
config.after(:all) { Resque.redis.keys("queue:*").each { |key| Resque.redis.del key } }
rescue Exception
puts "RESCUED REDIS ERROR"
end
テストを実行しようとしたときのスタック トレースによると、そのコード スニペットの 2 行目 -- config.before(:all) {...} -- がRedis::CannotConnectErrorをスローします。多くの「e.class.superclass.superclass...」コマンドの後、このエラーは StandardError から継承されていると判断しました。
その後、行き詰まりました。「rescue Redis::CannotConnectError」、「rescue」、最後に「rescue Exception」でエラーをキャッチしようとしましたが、それでもエラーがスローされます。ただ、Rubyのコマンドプロンプトで同じことをやってみたところ、毎回例外がキャッチされました
ここで何が起こっているのかを理解するのを手伝ってくれる人はいますか? ありがとう!