新手问题 如何捕捉 gem 调用的 callback 的 exception

suupic · 2012年11月04日 · 最后由 suupic 回复于 2012年11月04日 · 2000 次阅读

在使用 tire 连接 elasticsearch 时,在模型中可以引入了

include Tire::Model::Callbacks  

本来 tire 的 callback 可以自动更新索引是很嗨皮的事情 但是,若 elasticsearch 挂掉,tire 会出现错误

Errno::ECONNREFUSED

由于页面里需要统计点击量,所以每次访问都会更新记录、更新 elasticsearch 索引 tire 出错使得整个页面无法访问。

搜索本身是一个点缀的功能,非核心

所以希望: elasticsearch 运行时,正常更新索引 elasticsearch 挂掉时,捕获 tire 的错误,使页面不至于挂掉

如何实现?

https://github.com/karmi/tire/issues/346

去掉 include Tire::Model::Callbacks,自己手动加 after_save 和 after_destroy

参考 https://github.com/karmi/tire/blob/master/lib/tire/model/callbacks.rb#L16

#1 楼 @vkill tks,我思维太死板了

需要 登录 后方可回复, 如果你还没有账号请 注册新账号